国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

快速獲取json鍵值對的key名和快速根據value分組

qieangel2013 / 2119人閱讀

摘要:數組中正在處理的元素。調用的數組可選用作第一個調用的第一個參數的值。在沒有初始值的空數組上調用將報錯。取出例如每一次取出中的對象,如果存在覆蓋一次,如果是對象則賦值新數組

最近項目中后臺給返回的數據很復雜,需要各種遍歷,組合,其中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"]

/* 類數組 對象 */ 
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]
參數

callback
執行數組中每個值的函數,包含四個參數:

accumulator
累加器累加回調的返回值; 它是上一次調用回調時返回的累積值,或initialValue(如下所示)。

currentValue
數組中正在處理的元素。

currentIndex
數組中正在處理的當前元素的索引。如果提供了initialValue,則索引號為0,否則為索引為1。

array
調用reduce的數組

initialValue
[可選] 用作第一個調用 callback的第一個參數的值。如果沒有提供初始值,則將使用數組中的第一個元素。 在沒有初始值的空數組上調用 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對象則賦值新數組
    groups[val].push(item);
    return groups;
  }, {});
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/107147.html

相關文章

  • MongoDB優化之倒排索引

    摘要:簡單地說,倒排索引就是把與對調之后的索引,構建倒排索引的目的是提升搜索性能。本文將介紹中兩種構建倒排索引的方法與。 摘要: 為MongoDB中的數據構建倒排索引(Inverted Index),然后緩存到內存中,可以大幅提升搜索性能。本文將通過為電影數據構建演員索引,介紹兩種構建倒排索引的方法:MapReduce和Aggregation Pipeline。 GitHub地址: 作者:...

    Nino 評論0 收藏0
  • 深入理解HashMap(一): 從源頭說起

    摘要:前言系列文章目錄我們都不陌生也是面試幾乎必問的考點本系列我們來深入思考有關的設計思想和實現細節解決了什么問題任何數據結構的產生總對應著要解決一個實際的問題的產生要解決問題就是如何有效的存取一組鍵值對鍵值對是最常使用的數據形式如何有效地存 前言 系列文章目錄 HashMap我們都不陌生, 也是java面試幾乎必問的考點, 本系列我們來深入思考有關HashMap的設計思想和實現細節. Ha...

    Cristic 評論0 收藏0
  • es6 Map和set

    摘要:返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。該數組中的每一項也必須是數組,內部數組的首個項會作為鍵,第二項則為對應值。返回所有成員的遍歷器需要特別注意的是,的遍歷順序就是插入順序。 Js大部分歷史時期都只存在一種集合類型,也就是數組類型。數組在 JS 中的使用正如其他語言的數組一樣,但缺少更多類型的集合導致數組也經常被當作隊列與棧來使用。數組只使用了數值型的索引,而...

    superPershing 評論0 收藏0
  • 徹底弄懂ES6中Map和Set

    摘要:構造函數可以接受一個數組作為參數。本身是一個構造函數,用來生成數據結構。實例對象的屬性返回實例的成員總數。返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。返回鍵值對的遍歷器。使用回調函數遍歷每個成員。Map Map對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。構造函數Map可以接受一個數組作為參數。 Map和Object的區別 一個Object 的鍵...

    趙春朋 評論0 收藏0
  • es6學習之map和set

    摘要:和定義一組鍵值對的集合它是一組鍵值對的數據結構,由于之前的鍵必須是字符串。 Map和Set Map 定義:一組鍵值對的集合 它是一組鍵值對的數據結構,由于之前javascript的鍵(key)必須是字符串。為了使鍵可以是多種類型的于是在最新的es6中引入了map這種數據結構,這樣可以加快查詢速度,類似于查字典 方法和屬性 var m = map() //空map m.set(學生年齡,...

    lvzishen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<