[英]JavaScript updating value of array element
我有以下 JSON 数组,我正在尝试将新的 object 添加到数组元素之一,但我面临的问题是:
如果我在arrayHolder 的索引0
处为数组array1
推送新的arrayHolder
,那么所有array1
元素都将使用新的object 进行更新。
{
"arrayHolder": [
{
"array1": [],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [],
"array2": [],
"array3": [],
"array4": []
}
]
}
我正在使用下面的代码推送到array1
:
var jsonStr = "{\"arrayHolder\":[{\"array1\": [],\"....."; // Json String
var jsonObj = JSON.parse(jsonStr); // String To object
var newObj = {"value": 1}; // New object that I want to push
jsonObj.arrayHolder[0].array1.push(newObj);
// Even below code has same output
jsonObj.arrayHolder[0]["array1"][0] = newObj;
我低于 output:
{
"arrayHolder": [
{
"array1": [{"value": 1}],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [{"value": 1}],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [{"value": 1}],
"array2": [],
"array3": [],
"array4": []
},
{
"array1": [{"value": 1}],
"array2": [],
"array3": [],
"array4": []
}
]
}
我只想为arrayHolder
数组中的0th
个元素而不是主数组中的所有array1
元素更新array1
的值。
问题在于阵列支架,似乎阵列支架使用的是相同的 object,因此在一处修改它会导致更改在所有地方都反映出来。
尝试:
jsonObj.['arrayHolder'][0]['array1'].push(newObj);
Please try this Solution, @ehab has given you resion why your solution not working, you are using same object to complete object x and as you know object and array are Ref type in Javascript
var x={ "arrayHolder": [ { "array1": [], "array2": [], "array3": [], "array4": [] }, { "array1": [], "array2": [], "array3": [], "array4": [] }, { "array1": [], "array2": [], "array3": [], "array4": [] }, { "array1": [], "array2": [], "array3": [], "array4": [] } ] } var jsonStr =JSON.stringify(x)// Json String var jsonObj = JSON.parse(jsonStr); // String To object debugger var newObj = {"value": 1}; // New object that I want to push jsonObj.arrayHolder[0].array1.push(newObj); result=JSON.stringify(jsonObj) console.log("result:"+result)
结果:{"arrayHolder":[{"array1":[{"value":1}],"array2":[],"array3":[],"array4":[]},{"array1": [],"array2":[],"array3":[],"array4":[]},{"array1":[],"array2":[],"array3":[],"array4" :[]},{"array1":[],"array2":[],"array3":[],"array4":[]}]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.