【发布时间】:2017-03-10 20:33:06
【问题描述】:
var obj = {
a: [1, 3, 4],
b: 2,
c: ['hi', 'there']
}
removeArrayValues(obj);
console.log(obj); // --> { b: 2 }
这是我的代码:
function removeArrayValues(obj) {
for (var key in obj){
if (Array.isArray(obj[key])) delete obj[key]
//return obj[key] -> {b: 2, c: ["hi", "there"]}
}
return obj[key]
}
当我在for/in loop 中返回它而不是obj["k"] 时,为什么它只返回obj["a"] 和obj["c"]。我在即将发布此问题之前就发现了问题,但我在数组和对象方面遇到了很多问题,并且可以使用对这里发生的事情的解释。
【问题讨论】:
-
不清楚你不明白什么。 if 返回“true”、“false”和“true”。
-
"而不是 obj["k"]" - 你问的
"k"来自哪里?如果您有一个return语句inside 根据您注释掉的行,那么它会立即退出函数而不完成循环。请注意,函数中的return值将是undefined,因为在循环删除最后一项后obj[key]未定义。 -
我可以看到你已经成功删除了所有包含数组值的对象键.. 又是什么问题?
标签: javascript javascript-objects for-in-loop