Javascript 如何更新数组中特定对象的属性
我正在尝试创建一个股票交易员应用程序,我有一个空的股票购买数组。购买的每只股票都会向数组中添加一个对象。如果再次购买相同的股票,我想检查股票,然后只将数量附加到相关数组中。否则我只想附加新对象 我尝试过使用for-Each循环和一些函数,但我似乎无法获取已经购买的当前元素并仅更新其数量。我可以得到要添加的数量,但不能得到要添加的特定对象 item是要附加到数组的对象。仅当对象已在数组中时的数量;谢谢Javascript 如何更新数组中特定对象的属性,javascript,arrays,object,vue.js,Javascript,Arrays,Object,Vue.js,我正在尝试创建一个股票交易员应用程序,我有一个空的股票购买数组。购买的每只股票都会向数组中添加一个对象。如果再次购买相同的股票,我想检查股票,然后只将数量附加到相关数组中。否则我只想附加新对象 我尝试过使用for-Each循环和一些函数,但我似乎无法获取已经购买的当前元素并仅更新其数量。我可以得到要添加的数量,但不能得到要添加的特定对象 item是要附加到数组的对象。仅当对象已在数组中时的数量;谢谢 stocks = [ {id:0, name:'BMW', price:5 ,
stocks = [
{id:0, name:'BMW', price:5 , quantity:0},
{id:1, name:'Google',price:20, quantity:0},
{id:2, name:'IBM', price:34, quantity:0},
{id:3, name:'Apple', price:15,quantity:0}
];
...
...
stockPortfolio =[]
...
//the item is the
'ADD_PORTFOLIO_ITEM'(stockPortfolio , item){
//checking if an itemid exists
// if not create a new one
const arrayP = stockPortfolio
const found = arrayP.some(el => el.name === item.name);
if (found) {
}
else{
这对我有用。如果您遇到任何问题,请告诉我。我正在更改股票组合的原始数组。如果希望返回新数组,请在函数“addStock”的开头使用.slice
const stocks = [
{id:0, name:'BMW', price:5 , quantity:0},
{id:1, name:'Google',price:20, quantity:0},
{id:2, name:'IBM', price:34, quantity:0},
{id:3, name:'Apple', price:15,quantity:0}
];
let stockPortfolio = [ ];
function addStock(stockPortfolio , item) {
let found = stockPortfolio .some(el => el.name === item.name)
if (!found) {
stockPortfolio.push(item);
} else {
for (var i = 0; i < stockPortfolio.length; i++) {
if (stockPortfolio[i].name === item.name) {
stockPortfolio[i].quantity += item.quantity;
}
};
};
};
这对我有用。如果您遇到任何问题,请告诉我。我正在更改股票组合的原始数组。如果希望返回新数组,请在函数“addStock”的开头使用.slice
const stocks = [
{id:0, name:'BMW', price:5 , quantity:0},
{id:1, name:'Google',price:20, quantity:0},
{id:2, name:'IBM', price:34, quantity:0},
{id:3, name:'Apple', price:15,quantity:0}
];
let stockPortfolio = [ ];
function addStock(stockPortfolio , item) {
let found = stockPortfolio .some(el => el.name === item.name)
if (!found) {
stockPortfolio.push(item);
} else {
for (var i = 0; i < stockPortfolio.length; i++) {
if (stockPortfolio[i].name === item.name) {
stockPortfolio[i].quantity += item.quantity;
}
};
};
};
Found包含匹配的项,是的,但更新该特定项会给我带来问题,实际上,因为“Found”指向内存中的对象,所以如果更新它,它将更新源数据。您也可以用“findIndex”替换“find”函数,如果findIndex>-1,则可以覆盖stackPortfolio[found]。found包含匹配的项,是的,但更新该特定项会给我带来问题,实际上,因为“found”指向内存中的对象,因此如果您更新它,它将更新源数据。您还可以用“findIndex”替换“find”函数,如果findIndex>-1,则可以覆盖stackPortfolio[found]。