繁体   English   中英

JavaScript 更新数组元素的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM