Javascript 如何更改json数组中json对象数组内的值?

Javascript 如何更改json数组中json对象数组内的值?,javascript,arrays,json,iteration,Javascript,Arrays,Json,Iteration,我正在使用javascript来执行此操作 我想将[0,0,1]更改为[3,0,1]其中id='a' [ {'id' : 'a', arr : [0,0,1]}, {'id' : 'b', arr : [1,0,1]}, {'id' : 'c', arr : [1,4,1]} ] 谢谢。像这样试试 let value =[ {'id' : 'a', arr : [0,0,1]}, {'id' : 'b', arr : [1,0,1]}, {'id' : 'c',

我正在使用javascript来执行此操作

我想将
[0,0,1]
更改为
[3,0,1]
其中
id='a'

[
 {'id' : 'a', arr : [0,0,1]},
 {'id' : 'b', arr : [1,0,1]},
 {'id' : 'c', arr : [1,4,1]}
]
谢谢。

像这样试试

let value =[
    {'id' : 'a', arr : [0,0,1]},
    {'id' : 'b', arr : [1,0,1]},
    {'id' : 'c', arr : [1,4,1]}
   ]
   value.forEach(val=>{
   if(val.id=='a'){
    val.arr=[3,0,1] 
   }
})
可以使用数组的map()并更新值。检查下面的代码

让tmp=[
{'id':'a',arr:[0,0,1]},
{'id':'b',arr:[1,0,1]},
{'id':'c',arr:[1,4,1]}
]
tmp.map(项目=>{
如果(item.id=='a'){
项目arr=[3,0,1];
}
})

控制台日志(tmp)
用于获取匹配对象并对
arr
属性进行变异,或者(如果需要不可变)用于查找匹配项的索引,然后在修改目标项的情况下重建源数组(从其浅副本),或者使用
array.prototype.map()
对所有项进行更改,但匹配
id
的项除外=[{id':'a',arr:[0,0,1]},{id':'b',arr:[1,0,1]},{id':'c',arr:[1,4,1]};
mArr.forEach(item=>{if(item.id==“a”)item.arr=[3,0,1];返回item;
@iAmOren:如果要在变异方法之间进行选择,我更喜欢
.find()
-一旦找到匹配项,它将退出循环,让您变异其输出,而
.forEach()
将不必要地迭代到源数组的末尾,这可能会比较大。使用
.map()
变异源数组有点混乱,您最好使用
array.prototype.forEach()这也把我甩了。“他是怎么使用的?map不返回任何东西?”另一件事你应该考虑的是,你的方法可能是最不有效的一种在不可变的情况下,它会循环整个数组来改变单个项目(可能出现,就像在这种情况下,正好在第一个位置)。。对于足够大的输入,它可能会导致性能浪费。作为替代方法,
Array.prototype.find()
可能会被使用,这将在命中匹配时退出循环,因此您可以使用它的输出来变异
arr
属性……而且它不是我的下一票,只是为了防止您急于复仇;)这不是
数组.prototype.map()的正确用法
,它将返回数组。要简单地循环源数组,应该使用
array.prototype.forEach()
    You can have few different approach to achieve this
    1. using Map
        
  let tmp = [
    {'id' : 'a', arr : [0,0,1]},
    {'id' : 'b', arr : [1,0,1]},
    {'id' : 'c', arr : [1,4,1]}
   ]
   var updated_array;
   updated_array = tmp.map(function(element){
       if(element.id == 'a'){
         return {
          id: element.id,
          arr : [3,0,1]

          }   
       } else {
         return element
        }
   })
    
    2. Using Filter

   updated_array = tmp.filter(function(element){
    if(element.id == 'a'){
      return {
       id: element.id,
       arr : [3,0,1]

       }   
    } else {
      return element
     }
})

    3. Using ForEach


tmp.forEach(function(element){
          if(element.id == 'a'){
            element.arr = [3,0,1]
          }
        }) 


    4. You can also use traditional while or for loop to achieve this