【发布时间】:2015-12-16 15:29:01
【问题描述】:
我有以下函数,它将具有可变深度的最深值的对象重置为 0。我希望该函数在函数范围之外更改对象的属性;
var object =
{ '1': {
'10000': { '0': 6, '15': 3, '35': 5, '55': 3, '75': 85 },
}
}
function resetCounts(obj) {
for (var el in obj) {
if (obj.hasOwnProperty(el)) {
if (typeof obj[el] == 'number') {
if (obj[el] > 0) {
console.log(obj)
console.log(obj[el]);
obj[el] = 0;
console.log('reset');
console.log(obj);
console.log(obj[el]);
}
return;
}
resetCounts(obj[el]);
}
}
}
resetCounts(object);
这是控制台中的结果:
{ '0': 6, '15': 3, '35': 5, '55': 3, '75': 85 }
6
reset
{ '0': 0, '15': 3, '35': 5, '55': 3, '75': 85 }
0
object 的预期结果是:
{ '1': {
'10000': { '0': 0, '15': 0, '35': 0, '55': 0, '75': 0 },
}
}
知道如何实现这一点吗?如何将值传递给父对象?
【问题讨论】:
-
为什么会有
return声明?找到第一个数字后,它会停止循环。如果您不希望发生递归调用,只需将其删除并使用else。 -
好的。我会尽力。我刚刚编辑了我的问题以使其更清楚。
-
谢谢。这有帮助。
标签: javascript node.js recursion pass-by-reference