我试图理解递归如何使用嵌套的js对象,它可能具有相同的键名。例如,在下面的对象中,嵌套中的键是相同的。
因此,当我循环时,我期待obj[keys]
将始终位于第一行(标记为//第1行)。
我试图理解如果所有键具有相同的名称,js将如何知道如何循环。不确定我在理解的地方出错
var obj = {
a: { // Line 1
a: { // Line 2
a: { // Line 3
sweptArea: 5
}
}
}
}
function loop(obj, keyName) {
for (var keys in obj) {
if (obj.hasOwnProperty(keys) && typeof obj[keys] === 'object') {
if (obj[keys][keyName] !== undefined) {
console.log(obj[keys][keyName])
} else {
// In my understanding in all the iteration it will point to obj.a marked as line one
loop(obj[keys], 'sweptArea')
}
}
}
}
loop(obj, 'sweptArea')
答案 0 :(得分:4)
当您说obj[keys]
仅查找obj
上该名称的密钥时。该表达式本身不会递归。
每次调用函数时,传递给定义到obj
参数的变量的值都不同。