Javascript 如何更改对象';函数的s属性
我有以下函数,它将具有可变深度的最深值的对象重置为0。我希望函数更改函数范围外对象的属性Javascript 如何更改对象';函数的s属性,javascript,node.js,recursion,pass-by-reference,Javascript,Node.js,Recursion,Pass By Reference,我有以下函数,它将具有可变深度的最深值的对象重置为0。我希望函数更改函数范围外对象的属性 var object = { '1': { '10000': { '0': 6, '15': 3, '35': 5, '55': 3, '75': 85 }, } } function resetCounts(obj) { for (var el in obj) {
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
对象的预期结果是:
{ '1': {
'10000': { '0': 0, '15': 0, '35': 0, '55': 0, '75': 0 },
}
}
你知道如何做到这一点吗?如何将值传递给父对象?问题是“return;”从函数返回,因此只保留第一项更改。这是一把小提琴:
所以你知道,使用lodash,如果你只是在那里有计数,你不必重设深数,你可以重设每个标签,只要这样:
_.each(counts, function(v,k){ counts[k] = 0; });
为什么有一个return
语句?在找到第一个数字后,它将停止循环。如果不希望发生递归调用,只需删除它并使用else
。好的。我试试看。我刚刚编辑了我的问题,让它更清楚一点。谢谢。那很有帮助。谢谢你的帮助。工作完美。
_.each(counts, function(v,k){ counts[k] = 0; });