在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 怎么根據(jù)一個數(shù)組里面對象的值把這個數(shù)組分成多個數(shù)組

怎么根據(jù)一個數(shù)組里面對象的值把這個數(shù)組分成多個數(shù)組

我拿到的數(shù)據(jù)是一個由多個對象組成的數(shù)組;
我想根據(jù)其中一個對象的值把這個數(shù)組分成多個數(shù)組;
比如說根據(jù)其中的productId的值,分別把值為1,2,3...的對象單獨放進一個數(shù)組;
我的思路是先遍歷用if判斷匹配的值和索引值將這個數(shù)組存到新數(shù)組里;
但是不知道具體怎么實現(xiàn),或者有沒有其他更簡潔的方法。

數(shù)據(jù)如下圖:
clipboard.png

回答
編輯回答
尐飯團

如果只想得到一個數(shù)組的話用 filter,如果想得到多個數(shù)組得用 reduce

2018年2月21日 09:54
編輯回答
不二心
const groupBy = (arr, fn) =>
  arr.map(typeof fn === 'function' ? fn : val => val[fn]).reduce((acc, val, i) => {
    acc[val] = (acc[val] || []).concat(arr[i]);
    return acc;
  }, {});

Object.values(groupBy(arr, 'projectId'))
2018年8月8日 08:53
編輯回答
初念
let result=array.reduce(function(initArray,item){
    let index=item.productid;
    if(initArray[index]){
        initArray[index].push(item)
    }else{
        initArray[index]=[item]
     }
    return  initArray;
},[])
console.log(result)
方法多種多樣
2017年6月14日 13:03
編輯回答
久愛她
var a = [{id: 1}, {id: 3}, {id: 2}, {id: 3}, {id: 1}];
var b = a.reduce((r, x) => ((r[x.id] || (r[x.id] = [])).push(x), r), {});
var c = Object.keys(b).map(x => b[x]);

console.log(c); // [[{id: 1}, {id: 1}], [{id: 2}], [{id: 3}, {id: 3}]]
2018年7月10日 16:45