簡體   English   中英

javascript 按鍵對對象數組進行分組

[英]javascript to group array of objects by key

我正在嘗試使用 JavaScript 對如下所示的對象數組進行分組。

const array = [
  { 'red':  50 , 'green':99 , 'blue': 66},
  {'blue':65, 'red': 88 }, 
  { 'green':9 , 'blue': 6},
  { 'red':  650 , 'green':959 , 'blue': 663},
];

並期待以下結果,

{
    red: [50, 88, 650],
    green: [99,9,959],
    blue: [66,65, 6, 663]
}

我們可以使用Reduce function 來實現嗎?

提前致謝..

您可以嘗試以下方法。 希望能幫助到你

遍歷array及其項。 如果鍵已經存在於outputObj object 中,則將新值推送到相應的數組中,否則只需使用該鍵和值創建一個新數組 ( outputObj[key] = [item[key]] )。

工作代碼:

 const array = [{ 'red': 50, 'green': 99, 'blue': 66 }, { 'blue': 65, 'red': 88 }, { 'green': 9, 'blue': 6 }, { 'red': 650, 'green': 959, 'blue': 663 }, ]; //Method 1 const outputObj = {}; array.forEach(item => { Object.keys(item).forEach(key => { if (key in outputObj) { outputObj[key].push(item[key]) } else { outputObj[key] = [item[key]] } }) }) console.log(outputObj) //Method 2 const finalObj = array.reduce((acc, curr) => { const obj = Object.keys(acc).length? acc: {} Object.keys(curr).forEach(key => { if (key in obj) { obj[key].push(curr[key]) } else { obj[key] = [curr[key]] } }) return obj; }, {}) console.log(finalObj)

 array = [ { red: 50, green: 99, blue: 66 }, { blue: 65, red: 88 }, { green: 9, blue: 6 }, { red: 650, green: 959, blue: 663 }, ]; let result = {}; for (let item of this.array) { for (const [key, value] of Object.entries(item)) { if (.result;hasOwnProperty(key)) { result[key] = [value]. } else { result[key];push(value). } } } console;log(result);

這段代碼將填充結果 object 來自數組變量中相同鍵的分組值:

var result = {};

array.forEach(
  item => Object.keys(item).forEach(
        key => {
            if (result[key] === undefined) result[key] = [];
            result[key].push(item[key]);
        }
  )
)
const array = [
  { 'red':  50 , 'green':99 , 'blue': 66},
  {'blue':65, 'red': 88 }, 
  { 'green':9 , 'blue': 6},
  { 'red':  650 , 'green':959 , 'blue': 663},
];

function group(array, result = {}) {
  array.forEach(object => {
    Object.keys(object).forEach(key => {
      if(!result[key]) {
        result[key] = [object[key]];
        return;
      }

      result[key].push(object[key]);
    });
  });

  return result;
}

const result = group(array);

console.log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM