我有一个 3 级对象,其中包含一个针对每个级别进行迭代的代码,如果级别增加,我想改进它以使其更具动态性,可以使用递归,甚至可以使用非递归,但如何优化它?
var obj = [{
"seccion1": {
"level1": {
first: "John",
last: "Doe"
},
"level2": {
first: "juan",
last: "perez"
}
}
}]
obj.forEach(function(item) {
Object.keys(item).forEach(function(key) {
let value = item[key];
Object.keys(value).forEach(function(key2) {
console.log(value[key2].first, value[key2].last);
});
});
});
结果应该是:seccion1 level1 john doe level2 juan perez
您必须创建一个递归函数,避免重复代码:
我们可以避免最后一次迭代,但是你需要知道最后一次迭代,你避免再次遍历对象,下面的例子:
使用分治策略:这种类型的对象可以具有基本类型(字符串、数字、bigint、null、未定义...)或另一个嵌套对象作为属性。
所以你有一个基本情况:属性是一个原始的。递归情况是当对象的属性是另一个对象时:
if
限制 Pablo Lozano 的答案,可以通过更改by 条件?
并在声明函数时:
初始化变量来减少几行代码text
,如下所示:这将是迭代多级对象问候的最佳方式。
我向您展示了两种选择,您可以根据您的标准进行优化以获得您要求的结果。