首页 > 解决方案 > 如何通过 id 在对象数组中添加新值(不是新项目)

问题描述

我正在尝试value通过 id 在我的数组中添加一个新的。我没有尝试在我的数组中添加新项目...为此我可以使用push(),但它添加新项目而不是新值。

我正在尝试这样做:

我的数组:

const data = 
[  
   {  
      "id": 1,
      "year":2019,
      "value": 2,
   },
   {  
      "id": 2,
      "year": 2019,
      "value": 89,
   },   
   {  
      "id": 3,
      "year": 2019,
      "value": 99,
   }   
]

在一个特定的内部,id我会添加一个新值,如下所示:

data.forEach(item => {
  if(item.id === 2){
    //data inside id 2 -> item: 55
  }
})

所以我的新data数组如下所示:

const data = 
[  
   {  
      "id": 1,
      "year":2019,
      "value": 2,
   },
   {  
      "id": 2,
      "year": 2019,
      "value": 89,
      "item": 55
   },   
   {  
      "id": 3,
      "year": 2019,
      "value": 99,
   }   
]

在我的大部分搜索中,我发现了如何添加新元素。但这我知道该怎么做(push())。

那么如何在指定的内部添加一个新值id呢?

标签: javascriptarraysobject

解决方案


只需分配您要添加的属性:

data.forEach(item => {
  if(item.id === 2){
    item.item = 55;
  }
})

如果 ID 是唯一的,您可以使用以下.find()方法:

var el = data.find(item => item.id === 2);
if (el) {
  el.item = 55;
}

推荐阅读