为了账号安全,请及时绑定邮箱和手机立即绑定

怎么根据一个数组里面对象的值把这个数组分成多个数组

怎么根据一个数组里面对象的值把这个数组分成多个数组

守着星空守着你 2019-03-21 18:15:09
我拿到的数据是一个由多个对象组成的数组;我想根据其中一个对象的值把这个数组分成多个数组;比如说根据其中的productId的值,分别把值为1,2,3...的对象单独放进一个数组;我的思路是先遍历用if判断匹配的值和索引值将这个数组存到新数组里;但是不知道具体怎么实现,或者有没有其他更简洁的方法。数据如下图:
查看完整描述

4 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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)

方法多种多样


查看完整回答
反对 回复 2019-03-27
?
忽然笑

TA贡献1806条经验 获得超5个赞

如果只想得到一个数组的话用 filter,如果想得到多个数组得用 reduce


查看完整回答
反对 回复 2019-03-27
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

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'))


查看完整回答
反对 回复 2019-03-27
  • 4 回答
  • 0 关注
  • 1912 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信