使用javascript函數編程方法(如map/reduce),如何聚合/計數status
字段arr1
並將其轉換爲arr2
中的鍵/值對象數組。聚合並轉換對象數組
arr1 = [
{'task':'do something 1', 'status':'done'} ,
{'task':'do something 2', 'status':'done'} ,
{'task':'do something 3', 'status':'pending'} ,
{'task':'do something 4', 'status':'done'}
];
// Aggregate arr1 `status` field and transform to:
arr2 = [
{key:'done', value: 3},
{key:'pending', value: 1}
];
這裏是我的WIP 部分解決方案,處理只有聚集部分。我仍然需要轉換部分。
var arr2 = arr1.map(function(item) {
return item.status;
}).reduce(function(acc,curr,idx){
if(acc[curr] === undefined) acc[curr] = 1;
else acc[curr] += 1;
return acc;
}, []);
給出的輸出我只是做[這](https://jsfiddle.net/ocqnnmw3/1/),但不知道它的 「功能性」 不夠。 – adeneo
您的解決方案沒有給出預期的答案。或者提供的答案不正確。 – Kiril
我相信@Kiril是正確的,發佈的代碼會產生'[done:3,pending:1]',換句話說,它將數組視爲一個對象,並且不會返回預期的結果? – adeneo