Javascript 如何更新数组中特定对象的属性

Javascript 如何更新数组中特定对象的属性,javascript,arrays,object,vue.js,Javascript,Arrays,Object,Vue.js,我正在尝试创建一个股票交易员应用程序,我有一个空的股票购买数组。购买的每只股票都会向数组中添加一个对象。如果再次购买相同的股票,我想检查股票,然后只将数量附加到相关数组中。否则我只想附加新对象 我尝试过使用for-Each循环和一些函数,但我似乎无法获取已经购买的当前元素并仅更新其数量。我可以得到要添加的数量,但不能得到要添加的特定对象 item是要附加到数组的对象。仅当对象已在数组中时的数量;谢谢 stocks = [ {id:0, name:'BMW', price:5 ,

我正在尝试创建一个股票交易员应用程序,我有一个空的股票购买数组。购买的每只股票都会向数组中添加一个对象。如果再次购买相同的股票,我想检查股票,然后只将数量附加到相关数组中。否则我只想附加新对象

我尝试过使用for-Each循环和一些函数,但我似乎无法获取已经购买的当前元素并仅更新其数量。我可以得到要添加的数量,但不能得到要添加的特定对象

item是要附加到数组的对象。仅当对象已在数组中时的数量;谢谢

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]。