обновить вложенное значение в массиве javascript - PullRequest
0 голосов
/ 22 января 2019

Это странный вопрос, но я надеюсь, что кто-то может мне помочь.

У меня есть объект 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) {.....} Я покажу модальное окно, в котором пользователь может предоставить новый текст для значения имени ... я хотел бы, чтобы whoDataElement обновлялся до новый текст, такой, что когда-либо переменная объекта, которую я передаю в это поле, обновляется в объекте 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 голосов
/ 22 января 2019

Похоже, вы на правильном пути. Если вы передаете объект в функцию editThisField, вы можете изменить его содержимое, но в своем примере вы передаете примитив (который не будет работать, поскольку он передается по значению).

Другой вариант ... так как вы загружаете модальное, я предполагаю, что вы знаете, какой атрибут вы хотите изменить, чтобы вы могли просто динамически указывать ключи объекта или индексы массива. См. Пример здесь https://jsfiddle.net/jroden1f/. Обратите внимание, я немного изменил вашу модель данных, так как не был уверен, почему у вас были ноги и модули в качестве массивов, и это облегчило пример, если я просто сделал их объектами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...