簡體   English   中英

將具有相同值的對象推送到Array

[英]Pushing objects with the same values to Array

鑒於我們有和對象數組:

let objects = [
  {name: 'bob'},
  {name: 'foo'},
  {name: 'bar'},
  {name: 'foo'},
  {name: 'foo'}
]

我怎樣才能將這個數組轉換為這個數組:

let objects = [
  [
    {name: 'bob'}
  ],
  [
    {name: 'foo'},
    {name: 'foo'},
    {name: 'foo'}
  ],
  [
    {name: 'bar'}
  ]
]

高階函數

您可以使用數組.reduce()方法迭代數組並將每個對象放入一個鍵入name屬性的工作對象中的數組中,然后使用Object.values()將該工作對象轉換為數組數組:

 let objects = [ {name: 'bob'}, {name: 'foo'}, {name: 'bar'}, {name: 'foo'}, {name: 'foo'} ] let result = Object.values(objects.reduce((a,c) => { if (!a[c.name]) a[c.name] = [] a[c.name].push(c) return a }, {})) console.log(result) 

 let objects = [{ name: 'bob' }, { name: 'foo' }, { name: 'bar' }, { name: 'foo' }, { name: 'foo' } ] let result = objects.reduce((accumulator, currentValue) => { if (!Array.isArray(accumulator)) { //console.log("once") var temp = accumulator; accumulator = [ [], [], [] ]; accumulator[0].push(temp) return accumulator; } for(var i = 0; i < accumulator.length;i++){ //console.log(accumulator[i][0],currentValue.name) if(accumulator[i][0] == undefined){ //console.log("was undefined") accumulator[i] =[currentValue] return accumulator; }else if(accumulator[i][0].name == currentValue.name){ //console.log("found match") accumulator[i].push(currentValue) return accumulator; } } return accumulator; }); console.log(result) 

暫無
暫無

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

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