gpt4 book ai didi

javascript - 如何递归处理 JSON 数据并从函数返回处理后的 JSON?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:30 25 4
gpt4 key购买 nike

我有以下带有嵌套对象的 JSON 数据。我想从此结构中删除“id”并从函数返回更改后的 JSON。我尝试以下面的方式递归执行此操作,但无法返回更改后的 JSON。

var jsonStr = 
{"_id":"7r0c0342e",
"user":"myuser",
"project":"abcd",
"info":{"DOMAIN":{"Department":{"profile":[{"workex":8,"name":"alex","id":82838},
{"workex":8,"name":"smith","id":84838} ]}}} };


processJSON(jsonStr);

function processJSON(jsondata) {
for (var i in jsondata) {
var row = jsondata[i];
if(typeof row == "object") {
processJSON(row);
} else if(typeof row == 'number') {
if(i == 'id') {
delete jsondata[i];
} else {
continue;
}
} else {
continue;
}
}
}

console.log(jsonStr);

如何从 processJSON() 返回 JSON 的其余部分并将其保存在变量中?其次,这是递归执行此操作的正确方法吗?

谢谢。

最佳答案

通过您的方法,您改变了原始对象,因此在某种程度上,您不必返回任何东西。

如果您想保留原始对象并返回更改后的副本,您首先需要制作该对象的副本,然后在其上运行您的算法。您可以制作对象的浅拷贝,例如使用 Object.assign:

var jsonStr = {"_id":"7r0c0342e", "user":"myuser", "project":"data_mining", "info":{"DOMAIN":{"Department":{"profile":[{"workex":8,"name":"alex","id":82838}, {"workex":8,"name":"smith","id":84838} ]}}} };

console.log(processJSON(jsonStr));

function processJSON(jsondata) {
var output = Object.assign({}, jsondata)

for (var i in output) {
var row = output[i];
if (typeof row == "object") {
output[i] = processJSON(row);
} else if (typeof row == 'number') {
if (i == 'id') {
delete output[i];
} else {
continue;
}
} else {
continue;
}
}

return output;
}

关于javascript - 如何递归处理 JSON 数据并从函数返回处理后的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557006/

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