在巢狀陣列 JavaScript 中對物件分組


假設我們有一個 parentArray,它包含許多子陣列,每個子陣列大小相同,每個子陣列都是一個物件陣列,其中包含兩個屬性:鍵和值。在子陣列中,可以確認兩個物件不能具有相同的鍵,但所有子陣列都具有相同的 n 個鍵對,其中 n 是子陣列的大小。

我們的工作是準備一個物件,其中鍵為物件的鍵,值是包含該特定鍵的所有值的陣列。

以下是我們的示例 parent 陣列 -

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
         key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];

我們將依次遍歷父陣列,然後遍歷所有子陣列,如果我們找到匹配的鍵,我們將把它推入值陣列,否則我們將建立一個新的值陣列。

此功能的完整程式碼如下 -

示例

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
      key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];
const map = {};
parentArray.forEach(arr => {
   arr.forEach(obj => {
      const { key, value } = obj;
      if(map[key]){
         map[key].push(value);
      }else{
         map[key] = [value]
      }
   })
});
console.log(map);

輸出

控制檯中的輸出為 -

{
   '123': [ 'India', 'Germany' ],
   '124': [ 'USA', 'Kenya' ],
   '125': [ 'Japan', 'Portugal' ],
   '126': [ 'Denmark', 'UK' ],
   '127': [ 'Austria', 'Spain' ]
}

更新日期: 19-8-2020

2K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.