鍍金池/ 問答/HTML/ 一個簡單的數(shù)組問題,ES6如何優(yōu)雅的解決,萌新求救

一個簡單的數(shù)組問題,ES6如何優(yōu)雅的解決,萌新求救

let a = [ { name:"1", status:"1" }, { name:"2", status:"1" }, { name:"3", status:"2" }, { name:"4", status:"2" }, { name:"5", status:"3" }, { name:"6", status:"bbb" } ]
     
{ '1':[{ name:"1", status:"1" }, { name:"2", status:"1" }], '2':[{ name:"3", status:"2" }, { name:"4", status:"2" } ], '3':[ { name:"5", status:"3" }],'bbb':[{ name:"6", status:"bbb" }] }

用ES6如何把上面的變成下面這種結(jié)構(gòu),萌新求救。 就是把status提出來當(dāng)下面的鍵值。

回答
編輯回答
奧特蛋

不用一個一個 push,對每一個 status 直接 filter 一下就行了

let result = a.reduce((acc, {status}) => (
  acc[status] ? acc: {
    ...acc,
    [status]: a.filter(item => item.status === status)
  }
), {})
2018年7月15日 07:26
編輯回答
熟稔
var b = {};
a.forEach(function (obj) {
    var array = b[obj['status']] || [];
    array.push(obj);
    b[obj['status']] = array;
});
console.log(b);
2018年2月27日 20:38
編輯回答
放開她
var result = {};
a.forEach(item => {
    result[item.status] = result[item.status] || [];
    result[item.status].push(item);
});

console.log(result)
2017年11月20日 19:01