【问题标题】:update nested value in javascript array更新javascript数组中的嵌套值
【发布时间】:2019-01-21 23:44:21
【问题描述】:

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

我有一个 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 更新为新文本,这样我传入该字段的任何对象变量都会在腿对象中更新......我不确定我是否很好地解释了这一点,但我想不出从哪里开始寻找一个好的对此的态度。

基本上我正在创建一个文本区域,我在其中粘贴 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.

【问题讨论】:

  • 到目前为止你尝试了什么?
  • legs.pods[11].name 无效,因为 pods 是一个包含单个对象的数组 - 您需要执行 legs.pods[0]['11'].name 或类似操作
  • 没有真正按我的需要工作......也许这有助于澄清: var mything = { subthing: { thisthing: "here" } } var edit = mything.subthing.thisthing;编辑=“更改”; console.log(mything); // 那么listthing的值应该改变。

标签: javascript json object


【解决方案1】:

听起来您走在正确的轨道上。如果您将 object 传递给您的 editThisField 函数,您可以更改它的内容,但在您的示例中,您传递的是一个原语(它不会工作,因为它是按值传递的)。

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

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2021-10-14
    • 2022-01-22
    • 2020-09-15
    • 2015-02-19
    相关资源
    最近更新 更多