💡
【jsワンライナー】多次元配列内の重複要素を加工したデータを取得する
今回利用する多次元配列
const arr = [
{ id: 1, name: '太郎', money: 3000 },
{ id: 2, name: '次郎', money: 1000 },
{ id: 3, name: '三郎', money: 1200 },
{ id: 2, name: '次郎', money: 500 },
{ id: 1, name: '太郎', money: 1300 },
{ id: 1, name: '太郎', money: 10000 }
]
実装
Object.values(arr.reduce((a, {id, name, money}) => ({...a, [id]:{id, name, money:(a[id] ? a[id].money : 0) + money}}), {}))
>>> [ { id: 1, name: '太郎', money: 14300 },
{ id: 2, name: '次郎', money: 1500 },
{ id: 3, name: '三郎', money: 1200 } ]
Object.values
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.values(object1));
// expected output: Array ["somestring", 42, false]
Array.prototype.reduce
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
- reduceは4つの引数をとり、それぞれ「直前の結果」「今回の値」「連番」「自身の配列」を示します。
Discussion
集計集約操作を達成したい場合はtidyjsライブラリを使うとハンディかもです。
demo code.
簡単ですが、以上です。
ありがとうございます!