gpt4 book ai didi

javascript - 更好/更快地修改嵌套对象不同深度下找到的所有匹配属性的方法

转载 作者:行者123 更新时间:2023-12-01 01:13:25 26 4
gpt4 key购买 nike

我从 API 收到一个 json,我需要解析并修改一个属性值。问题是,我收到的 json 数据的嵌套结构不一致,我无法控制它。

这将禁止我指定在特定深度(如 parsedJson.children[0].property)下查看,因为我正在查找的属性可以在不同的嵌套级别(如 parsedJson.children[0].children[)上找到0].property 在下一次迭代中。

我目前是这样做的,并且有效

var parsedJson = JSON.parse('{"a":[{"a1":[{"p":0},{"np":1}]}],"b":[{"p":0},{"np":1}],"c":[{"c1":[{"c2":[{"p":0}]},{"np":1}]}]}')


console.log("before modify")
console.log(parsedJson)

modifyProperty(parsedJson,"p",1);


function modifyProperty(obj,prop,val){
for (var key in obj){
if (key == prop){
obj[key] = val;
}
modifyProperty(obj[key],prop,val);
}
}

console.log("after modify")
console.log(parsedJson)

但我担心以后,如果我从 API 收到一个包含更多数据和更深层次嵌套的 json,它可能会影响性能,因为这需要一一递归地检查所有子节点。

有更好/更快的方法吗?

最佳答案

您可以将第二个参数传递给 JSON.parse,以递归方式转换所有所需的属性值:

var parsedJson = JSON.parse(
'{"a":[{"a1":[{"p":0},{"np":1}]}],"b":[{"p":0},{"np":1}],"c":[{"c1":[{"c2":[{"p":0}]},{"np":1}]}]}',
(key, val) => key === 'p' ? 1 : val
);
console.log(parsedJson);

关于javascript - 更好/更快地修改嵌套对象不同深度下找到的所有匹配属性的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com