Javascript 如何更改json数组中json对象数组内的值?
我正在使用javascript来执行此操作 我想将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',
[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