如何使用javascript統一具有相同鍵的陣列中的物件值?
例如,如果我有這個陣列:
0: {key: 'abc1', value: 'product1'}
1: {key: 'abc2', value: "product2"}
2: {key: 'abc2', value: 'product3'}
我希望結果陣列是這樣的:
0: {key: 'abc1', value: 'product1'}
1: {key: 'abc2', value: "product2, product3"}
uj5u.com熱心網友回復:
這是一種非常手動的方法,我確定有一個更優雅的解決方案,但我想不出一個解決方案。
val = [
{key: 'abc1', value: 'product1'},
{key: 'abc2', value: 'product2'},
{key: 'abc2', value: 'product3'}
];
newVal = [];
val.forEach((objToAdd)=>{
let match = newVal.find((obj)=>obj.key===objToAdd.key);
if(match){
match.value=`${match.value}, ${objToAdd.value}`;
} else {
newVal.push(objToAdd);
}
});
console.log(newVal);
uj5u.com熱心網友回復:
另一個高性能解決方案:
const data = [
{ key: "abc1", value: "product1" },
{ key: "abc2", value: "product2" },
{ key: "abc2", value: "product3" },
];
const output = Object.values(
data.reduce((carry, item) => {
const key = item.key;
if (carry[key]) {
carry[key].value = `, ${item.value}`;
} else {
carry[key] = item;
}
return carry;
}, {})
);
console.log(output);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/397329.html
標籤:javascript 数组 反应
