Как обновить значение для определенного ключа в списке объектов в Javscript? - PullRequest
0 голосов
/ 06 марта 2019

Я новичок в Javascript.У меня есть объект, который выглядит ниже

let final_json = {"ab": [{"cd": "ee", "col_val": {}},{"ef": "uu", "col_val": {"gg": "hh"}}]}

Теперь я хочу обновить значение ключа col_val, указав свое собственное значение.Но мне также нужно убедиться, что ключ cd существует в данном объекте.

Это то, что я делаю

if(final_json["ab"]) {    
    Object.entries(final_json["ab"]).forEach(([key, val]) => {
        if(final_json["ab"][key].hasOwnProperty("cd")) {
            // update the col_val value with {"rr": "ff"}
        }
    })
}

Я просто не могу понять, как мне это сделатьтот.Любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 06 марта 2019

Здесь я использую .forEach и просто проверяю свойство cd, затем обновляю col_val.

let final_json = {"ab": [{"cd": "ee", "col_val": {}},{"ef": "uu", "col_val": {"gg": "hh"}}]}
final_json.ab.forEach(o => {
  if (o.cd) o.col_val = {testKey: "testValue"}
})
console.log(final_json)
1 голос
/ 06 марта 2019

Используйте карту и проверьте наличие компакт-диска с помощью функции hasOwnProperty().hasOwnProperty() сообщает, присутствует ли конкретное свойство в объекте или нет. См.

let final_json = {
  "ab": [{
    "cd": "ee",
    "col_val": {}
  }, {
    "ef": "uu",
    "col_val": {
      "gg": "hh"
    }
  }]
};
final_json.ab.map(e => {
  if (e.hasOwnProperty('cd'))
      e.col_val = 'my value'
    return e;
})
console.log(final_json)
0 голосов
/ 06 марта 2019

Вы можете найти нужный объект и обновить свойство, если оно найдено.

let object = { ab: [{ cd: "ee", col_val: {} }, { ef: "uu", col_val: { gg: "hh" } }] },
    target = (object["ab"] || []).find(o => 'cd' in o);

if (target) {
    target.col_val = { rr: "ff" };
}

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...