json - uppdatera objektets egenskap vid index till lagrad array i angular 2
Jag har en array med objekt som ser ut så här
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
Värdet bör inte läggas till i arrayen, istället bör det uppdatera det föregående värdet om indexet matchar det tidigare indexet i en array, annars bör värdet läggas till i JSON-arrayen.
0:{price: 42, index: 103}
1:{price: 44, index: 102}
length:2
Koden jag kör just nu ges nedan:
updateValue(prices,indexes) {
let v = {price: prices,index: indexes};
this.newPriceList.push(v);
}
Svar #1
Så du behöver först kolla om det finns ett objekt med det indexet i arrayen. Om ja - uppdatera priset för det objektet, om inte - lägg bara till det i arrayen.
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 });
}
}
Svar #2
Vänligen gör följande
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);
}
}
