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