如何在Javscript中的对象列表中更新某个键的值?

时间:2019-03-06 09:55:05

标签: javascript object

我是Java的新手。我有一个看起来像下面的对象

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 个答案:

答案 0 :(得分:2)

在这里,我使用.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 :(得分:1)

使用地图,并使用hasOwnProperty()功能检查cd。 hasOwnProperty()告知对象中是否存在特定属性。 Refer

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)

答案 2 :(得分:0)

您可以找到所需的对象并更新属性(如果找到)。

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; }