通过匹配其键替换嵌套对象的 属性
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;
}
我有一个对象如下
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;
}