![](/img/trans.png)
[英]Reduce array of objects for same key values by perserving the data(pushing the values in an array) in javascript?
[英]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.