【发布时间】:2022-11-25 21:00:14
【问题描述】:
当对象嵌套在对象内部时,我无法使用常规的 for in 循环遍历它们。 我用谷歌搜索,发现我必须创建一个递归函数来检查该属性是否是一个对象。 我写了一个这样的递归函数: `
function isObject(value){
return (typeof(value)==='object');
}
``
function listToArray(list){
let arr=[];
for (let elem in list){
if(isObject(list[elem])===false){
console.log(list[elem]);
}
else if (isObject(list[elem])){
listToArray(list[elem]);
}
}
return arr;
}
`
此功能运行良好,它深入循环嵌套在对象内的所有对象,并控制台记录所有属性值。并返回一个空数组。
但是,当我将 console.log(list[elem])) 替换为 arr.push(list[elem]) 以使实际功能正常工作时,它仅推送不是第一个更大对象中的对象的属性。
这是 Eloquent JavaScript 这本书中的一个编码问题。我不想回答这个问题(实际上这本书提供了答案)我只想知道为什么 console.log 有效而 arr.push 不有效。因为这对我来说太奇怪了,我找不到解释。
【问题讨论】:
-
你能更清楚地描述你的问题吗?您是否希望将所有不是对象的元素分组并推入数组?
标签: javascript arrays object nested