摘要:數(shù)組中正在處理的元素。調(diào)用的數(shù)組可選用作第一個調(diào)用的第一個參數(shù)的值。在沒有初始值的空數(shù)組上調(diào)用將報錯。取出例如每一次取出中的對象,如果存在覆蓋一次,如果是對象則賦值新數(shù)組
最近項目中后臺給返回的數(shù)據(jù)很復(fù)雜,需要各種遍歷,組合,其中Object.keys(obj)和通過封裝的groupBy這兩個方法帶給了我極大的便利
Object.keys(obj)/* Array 對象 */ let arr = ["a", "b", "c"]; console.log(Object.keys(arr)); // ["0", "1", "2"] /* Object 對象 */ let obj = { foo: "bar", baz: 42 }, console.log(Object.keys(obj)); // ["foo","baz"] /* 類數(shù)組 對象 */ let obj = { 0 : "a", 1 : "b", 2 : "c"}; console.log(Object.keys(obj)); // ["0", "1", "2"]groupBy方法以及用到的reduce詳解
Array.prototype.groupBy = function(prop) { return this.reduce(function(groups, item) { var val = item[prop]; groups[val] = groups[val] || []; groups[val].push(item); return groups; }, {}); } var myList = [ {time: "12:00", location: "mall" }, {time: "9:00", location: "store" }, {time: "9:00", location: "mall" }, {time: "12:00", location: "store" }, {time: "12:00", location: "market" }, ]; var byTime = myList.groupBy("time"); byTime = { "9:00": [ {time: "9:00", location: "store" }, {time: "9:00", location: "mall" }, ], "12:00": [ {time: "12:00", location: "mall" }, {time: "12:00", location: "store" }, {time: "12:00", location: "market"} ] }reduce
var total = [0, 1, 2, 3].reduce(function(sum, value) { return sum + value; }, 0); // total is 6 var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) { return a.concat(b); }, []); // flattened is [0, 1, 2, 3, 4, 5]參數(shù)
callback
執(zhí)行數(shù)組中每個值的函數(shù),包含四個參數(shù):
accumulator 累加器累加回調(diào)的返回值; 它是上一次調(diào)用回調(diào)時返回的累積值,或initialValue(如下所示)。 currentValue 數(shù)組中正在處理的元素。 currentIndex 數(shù)組中正在處理的當前元素的索引。如果提供了initialValue,則索引號為0,否則為索引為1。 array 調(diào)用reduce的數(shù)組
initialValue
[可選] 用作第一個調(diào)用 callback的第一個參數(shù)的值。如果沒有提供初始值,則將使用數(shù)組中的第一個元素。 在沒有初始值的空數(shù)組上調(diào)用 reduce 將報錯。
Array.prototype.groupBy = function(prop) { return this.reduce(function(groups, item) { var val = item[prop]; // 取出time 例如 9:00 groups[val] = groups[val] || []; // 每一次取出groups中的9:00對象,如果存在(覆蓋一次),如果是12:00對象則賦值新數(shù)組 groups[val].push(item); return groups; }, {}); }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107147.html
摘要:簡單地說,倒排索引就是把與對調(diào)之后的索引,構(gòu)建倒排索引的目的是提升搜索性能。本文將介紹中兩種構(gòu)建倒排索引的方法與。 摘要: 為MongoDB中的數(shù)據(jù)構(gòu)建倒排索引(Inverted Index),然后緩存到內(nèi)存中,可以大幅提升搜索性能。本文將通過為電影數(shù)據(jù)構(gòu)建演員索引,介紹兩種構(gòu)建倒排索引的方法:MapReduce和Aggregation Pipeline。 GitHub地址: 作者:...
摘要:前言系列文章目錄我們都不陌生也是面試幾乎必問的考點本系列我們來深入思考有關(guān)的設(shè)計思想和實現(xiàn)細節(jié)解決了什么問題任何數(shù)據(jù)結(jié)構(gòu)的產(chǎn)生總對應(yīng)著要解決一個實際的問題的產(chǎn)生要解決問題就是如何有效的存取一組鍵值對鍵值對是最常使用的數(shù)據(jù)形式如何有效地存 前言 系列文章目錄 HashMap我們都不陌生, 也是java面試幾乎必問的考點, 本系列我們來深入思考有關(guān)HashMap的設(shè)計思想和實現(xiàn)細節(jié). Ha...
摘要:返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。該數(shù)組中的每一項也必須是數(shù)組,內(nèi)部數(shù)組的首個項會作為鍵,第二項則為對應(yīng)值。返回所有成員的遍歷器需要特別注意的是,的遍歷順序就是插入順序。 Js大部分歷史時期都只存在一種集合類型,也就是數(shù)組類型。數(shù)組在 JS 中的使用正如其他語言的數(shù)組一樣,但缺少更多類型的集合導(dǎo)致數(shù)組也經(jīng)常被當作隊列與棧來使用。數(shù)組只使用了數(shù)值型的索引,而...
摘要:構(gòu)造函數(shù)可以接受一個數(shù)組作為參數(shù)。本身是一個構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。實例對象的屬性返回實例的成員總數(shù)。返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。返回鍵值對的遍歷器。使用回調(diào)函數(shù)遍歷每個成員。Map Map對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。構(gòu)造函數(shù)Map可以接受一個數(shù)組作為參數(shù)。 Map和Object的區(qū)別 一個Object 的鍵...
摘要:和定義一組鍵值對的集合它是一組鍵值對的數(shù)據(jù)結(jié)構(gòu),由于之前的鍵必須是字符串。 Map和Set Map 定義:一組鍵值對的集合 它是一組鍵值對的數(shù)據(jù)結(jié)構(gòu),由于之前javascript的鍵(key)必須是字符串。為了使鍵可以是多種類型的于是在最新的es6中引入了map這種數(shù)據(jù)結(jié)構(gòu),這樣可以加快查詢速度,類似于查字典 方法和屬性 var m = map() //空map m.set(學(xué)生年齡,...
閱讀 3758·2021-08-11 11:16
閱讀 1629·2019-08-30 15:44
閱讀 1998·2019-08-29 18:45
閱讀 2278·2019-08-26 18:18
閱讀 1009·2019-08-26 13:37
閱讀 1576·2019-08-26 11:43
閱讀 2125·2019-08-26 11:34
閱讀 380·2019-08-26 10:59