我有一个看起来像这样的对象
0:{price: 43, index: 103}
1:{price: 47, index: 103}
2:{price: 42, index: 103}
3:{price: 45, index: 102}
4:{price: 48, index: 102}
5:{price: 46, index: 102}
6:{price: 44, index: 102}
length:7
该值不应添加到数组中,相反,如果索引与数组的前一个索引匹配,则应更新前一个值,否则该值应在JSON数组中累加。
0:{price: 42, index: 103}
1:{price: 44, index: 102}
length:2
我现在正在运行的代码如下:
updateValue(prices,indexes) {
let v = {price: prices,index: indexes};
this.newPriceList.push(v);
}
答案 0 :(得分:1)
因此,您首先需要检查数组中是否有带有这些索引的项目。如果是,请更新该商品的价格;否则,只需将其添加到数组中即可。
updateValue(prices, indexes) {
const found = this.newPriceList.find(item => item.index === indexes);
if (found) {
found.price = prices;
} else {
this.newPriceList.push({ price: prices, index: indexes });
}
}
答案 1 :(得分:1)
请执行以下操作
updateValue(prices,indexes)
{
const oldItem = this.newPriceList.filter(item => item.index === indexes)[0];
if (oldItem) {
oldItem.price = prices
} else {
const v = {price: prices,index: indexes};
this.newPriceList.push(v);
}
}
答案 2 :(得分:0)
这里是使用Array#reduce
方法的另一种方法:
arr = [{price: 43, index: 103},
{price: 47, index: 103},
{price: 42, index: 103},
{price: 45, index: 102},
{price: 48, index: 102},
{price: 46, index: 102},
{price: 43, index: 102}];
processed = arr.reduce((acc, v) => {
acc[v.index] = v;
return acc;
}, {});
result = Object.values(processed);
console.log(result );
//=> Array [Object { price: 43, index: 102 }, Object { price: 42, index: 103 }]