午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

javascript - 關于比較函數(shù)的問題

瀏覽:175日期:2023-02-13 11:21:37

問題描述

function createComparisonFunction(propertyName) { return function(object1,object2) {var value1 = object1[propertyName];var value2 = object2[propertyName]; if(value1 < value2) { return -1;} else if(value1 > value2) { return 1;} else { return 0;} }};這是紅寶書中一個知識點,這段代碼不是太明白

問題解答

回答1:

這是為了比較特定數(shù)據(jù)結構而制造的工具函數(shù)。例如數(shù)據(jù)結構格式為:

let arr = [{ name: ’foo’, value: 123 }, { name: ’bar’, value: 456 }]

這時,一般的 sort 方法需要這么編寫,形如:

arr.sort(function (a, b) { return a.value - b.value > 0 ? 1 : -1 })

這段代碼存在的問題:

硬編碼了 value 參數(shù),排序其它字段時必須重新編碼。

返回 1 / -1 的邏輯是冗余而無聊的。

直接編寫排序的匿名函數(shù),在紅寶書的年代可讀性不夠好(現(xiàn)在有箭頭函數(shù),其實問題不大)。

所以對上面的 case,紅寶書作者設計了一個通用的工具函數(shù),以生成一個【用于排序特定字段】的函數(shù)。注意你調用這個工具函數(shù),返回的是一個新函數(shù),而不是排序的結果(所謂高階函數(shù))。

應用這個封裝后,代碼形如:

// 創(chuàng)造一個【根據(jù) value 字段來排序】的函數(shù)let compareFn = createComparisonFunction(’value’)// 將創(chuàng)造的函數(shù)傳入 sort 中作為排序依據(jù)arr.sort(compareFn)

這就起到了簡化業(yè)務邏輯的作用。

回答2:

什么不明白, 就是比較兩個對象某個屬性的大小createComparisonFunction('test')({’test’: 1}, {'test': 2})返回的是-1

回答3:

調用函數(shù)時,分為兩步來看。首先通過createComparisonFunction()傳入比較的字段。在createComparisonFunction()函數(shù)內,返回一個匿名函數(shù)。同時由于匿名函數(shù)處在createComparisonFunction()內,所以你對createComparisonFunction()傳入的參數(shù)propertyName對匿名函數(shù)也有效存在。通過上一步,你已經(jīng)得到的匿名函數(shù)包含propertyName,此時你就可以傳入你要比較的兩個對象,在函數(shù)內比較他們的propertyName屬性,返回比較結果。

回答4:

這個就叫高階函數(shù)。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 久久95| 亚洲精品亚洲人成人网 | 99久热| 国产精品日 | 天天爽天天操 | 久久久久免费观看 | 欧美一级免费 | 免费高清毛片 | 中文字幕av一区二区三区 | 天堂av手机版 | 顶级嫩模啪啪呻吟不断好爽 | 日日夜夜拍 | 亚洲色图另类小说 | 国模大胆一区二区三区 | 国产无遮挡 | 日批视频在线看 | 中文字幕在线字幕中文 | 国产激情在线观看 | 91精品播放| 免费午夜av| 天天操婷婷 | 亚洲国产123| 三区在线播放 | 亚洲免费看黄 | 国产精品乱码一区二区视频 | 最新精品国产 | 欧美精品aaa | 中文字幕第5页 | 亚洲成人天堂 | www日韩av| 91无套直看片红桃 | 特级丰满少妇一级aaaa爱毛片 | 日本黄色大片免费看 | 高清久久 | 国产黄色精品网站 | 成人午夜淫片免费观看 | 亚洲女人网 | 黄色一区二区三区 | 久久不雅视频 | 欧美一级片在线播放 | 日韩精品中文字幕在线观看 |