通过匹配其键替换嵌套对象的 属性

Replace property of a nested object by matching its key

我有一个对象如下

let obj = {
    "p1" : "main",
    "p2" : {
        "p21" : [
            {
                "key1" : "val1",
                "value1" : "val2",
            },
            {
                "prop"  : "test",
                "value" : "dummy"
            }
        ]
    }
}

需要找到 "prop",如果它存在,则将 "value" 设置为空字符串。请注意,"p21" 中可能有任意数量的对象,并且顺序不限。只需要找到 "prop" 然后更新 "value" 为空字符串

已尝试以下

obj.p2.p21.map((item) => {
    if (item.hasOwnProperty("prop")) {
      item.value = "";
    }
})

obj.p2.p21.map((elem) => {
    if(Object.keys(elem)[0] === "prop") 
        elem.value = ""
})

试试这样的东西?

您需要创建一个函数来检查键然后替换值。

let obj = {
  "p1": "main",
  "p2": {
    "p21": [{
        "key1": "val1",
        "value1": "val2",
      },
      {
        "prop": "test",
        "value": "dummy"
      }
    ]
  }
}

function replaceValue(item) {
  for (var i in item) {
    if (i == "prop") {
      item["value"] = "";
      break;//break if you only want to place the first , otherwise remove it
    }
  }
}

obj.p2.p21.map(item => replaceValue(item));

console.log(obj);
.as-console {
  height: 100% !important;
}