gpt4 book ai didi

javascript - 在javascript中从其他对象递归创建嵌套对象

转载 作者:行者123 更新时间:2023-11-28 16:44:28 24 4
gpt4 key购买 nike

我是编程新手,我正在研究一个困扰我一段时间的问题。

我想从 JavaScript 中的另一个嵌套对象递归创建一个嵌套对象,

下面是输入的示例数据,但在实际情况下,我不知道这个对象有多深。

nums = {
Obj:{
x1:{
x11:43,
x12:4,
x13:612
},
x2:{
x21:4,
x22:7,
},
x3:2,
}}

这就是我想要的结果(看数字是偶数还是奇数,偶=真,奇=假)

res = {
Obj:{
x1:{
x11:false,
x12:true,
x13:true
},
x2:{
x21:true,
x22:false,
},
x3:true,
}}

这是我的代码

const nums = {
Obj:{
x1:{
x11:43,
x12:4,
x13:612
},
x2:{
x21:4,
x22:7,
},
x3:2,
}
}
const res ={};

getResult(nums);

console.log(res);

function getResult(x){
Object.keys(x).forEach(element => {
if(isNaN(x[element])){
res[element]=getResult(x[element]);
} else {
let result = (x[element] % 2 < 1)? true:false;
return {[element]: result}; // this is where I don't know what to, I try to return a object,
// but it gives{x1: undefined, x2: undefined, Obj: undefined}
//
// if I change to "return res[element]=result"
// every sub-Object will add under the same level
}
});
}

如果有人能在这方面帮助我,我将非常感激。

最佳答案

不要使用 return {[element]: result}; ,而是覆盖该值,并在循环后从函数返回变异对象:

请注意,这会改变原始对象,如果你想保留它,请制作一个副本:

const copy = JSON.parse(JSON.stringify(nums));

const nums = {
Obj: {
x1: {
x11: 43,
x12: 4,
x13: 612
},
x2: {
x21: 4,
x22: 7,
},
x3: 2,
}
}
const res = {};
const copy = JSON.parse(JSON.stringify(nums));

getResult(copy);

console.log(res);

function getResult(x) {
Object.keys(x).forEach(element => {
if (isNaN(x[element])) {
res[element] = getResult(x[element]);
} else {
let result = (x[element] % 2 < 1) ? true : false;
x[element] = result; // overwrite the number with true or flse
}
});
return x; // return the mutated object
}

关于javascript - 在javascript中从其他对象递归创建嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60712614/

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