更新javascript数组中的嵌套值

时间:2019-01-21 23:44:21

标签: javascript json object

这是一个奇怪的问题,但我希望有人能帮助我。

我有一个JS对象(实际上是JSON字符串,然后将其转换回对象)。

{
  "legs": [{
    "pods": [{
      "11": {
        "id": 6,
        "name": "tesla",
        "text": "tesla model2",
        "battery": "60"
      },
      "21": {
        "id": 9,
        "name": "porsche",
        "text": "porsche electric",
        "battery": "100"
      }
    }]
  }]
}

因此,在我的JavaScript中,我将调用一个特定的项目,例如legs.pods [11] .name

我将其传递给诸如editThisField(legs.pods [11] .name);之类的函数。

在该函数上,editThisField(whichDataElement){.....}我将显示一个模式框,用户可以在其中输入名称值的新文本...我想要的是将whichDataElement更新为新文本,例如我传递给该字段的对象变量会在legs对象中更新...我不确定我的解释是否很好,但是我不知道从哪里开始寻找一个好的方法。

基本上,我在粘贴JSON的地方制作了一个文本区域,系统允许我通过模式弹出窗口编辑JSON对象。因此,模态会出现,并根据特定子对象中的数据动态显示一种形式。填写表单时,原始JSON已更新...有想法吗?

并不是我真正需要的。。。也许这有助于弄清:

var mything = {
    subthing: {
        thisthing: "here"
    }
}

var edit = mything.subthing.thisthing;
edit = "Changed";
console.log(mything); // then the listthing value should be changed.

1 个答案:

答案 0 :(得分:0)

听起来您在正确的轨道上。如果将对象传递给editThisField函数,则可以更改它的内容,但是在您的示例中,您传递的是基元(它不能按值传递)。

另一个选项...由于您正在加载模式,我假设您知道要更改的属性,因此您可以动态地指定对象键或数组索引。请参见此处的示例https://jsfiddle.net/jroden1f/。请注意,我稍稍更改了数据模型,因为我不确定为什么将腿和豆荚作为数组,如果仅将它们作为对象,这会使示例更容易。