我有以下陣列需要幫助。
let test = [
{
date: ["2021-11-09", "2021-11-09", "2021-11-10", "2021-11-10"],
amount: [0.5, 0.5, 1, 2],
}];
如何合并具有相同日期的金額?我希望資料回傳如下:
date: ["2021-11-09", "2021-11-10"],
amount: [1, 3],
先感謝您!
uj5u.com熱心網友回復:
正如評論中提到的,這只是date陣列中的“分組依據”日期,將陣列中相同索引處的元素相加amount。
let test = [
{
date: ['2021-11-09', '2021-11-09', '2021-11-10', '2021-11-10'],
amount: [0.5, 0.5, 1, 2],
},
];
const result = test.map(({ date, amount }) => {
const grouped = date.reduce((a, d, i) => a.set(d, (a.get(d) ?? 0) amount[i]), new Map());
return {
date: [...grouped.keys()],
amount: [...grouped.values()],
};
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
你可以用Array#map和Array#reduce。然后迭代日期陣列,然后添加基于日期陣列索引的數量。Array#reduce回傳物件。所以分開日期和金額使用Object#values和Object#keys
let test = [ { date: ["2021-11-09", "2021-11-09", "2021-11-10", "2021-11-10"], amount: [0.5, 0.5, 1, 2], }];
const res = test.map(({date,amount})=> {
const sumObj = date.reduce((acc,c,i)=>(acc[c] = (acc[c] || 0) amount[i],acc),{})
return ({date:Object.keys(sumObj),amount:Object.values(sumObj)})
})
console.log(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354257.html
標籤:javascript 数组
