gpt4 book ai didi

javascript - 遍历在nodeJs中具有嵌套对象的对象

转载 作者:行者123 更新时间:2023-11-30 08:34:27 25 4
gpt4 key购买 nike

我有一个包含多个嵌套对象的 javascript 对象,如下所示:

 var stats = {
bookServed: {
redis: 90,
s3: 90,
signedUrl: 70
},
errors: {
redis: {
bookService: 70,
mapi: 50,
capi: 30
},
AWS: {
signedUrl: 70,
downloadBook: 50,
searchBook: 10
},
decryption: 60
}
};

什么是遍历其所有属性并将每个值设置为例如 0 的最简洁方法。我写了这样的东西

 for (var property in stats) {
if (stats.hasOwnProperty(property)) {
if (typeof property === "object") {
for (var sub_property in property)
if (property.hasOwnProperty(sub_property)) {
sub_property = 0
}
} else {
property = 0;
}
}
}

我愿意使用像 underscore.js 这样的库来正确地完成任务。

最佳答案

相对简单的递归问题,我会使用一个在找到子对象时调用自身的函数。我也会避免使用 for in 循环,而是在对象的键上使用 forEach(它更快,并且不需要 hasOwnProperty 检查。)

function resetValuesToZero (obj) {
Object.keys(obj).forEach(function (key) {
if (typeof obj[key] === 'object') {
return resetValuesToZero(obj[key]);
}
obj[key] = 0;
});
}

var stats = {
bookServed: {
redis: 90,
s3: 90,
signedUrl: 70
},
errors: {
redis: {
bookService: 70,
mapi: 50,
capi: 30
},
AWS: {
signedUrl: 70,
downloadBook: 50,
searchBook: 10
},
decryption: 60
}
};

console.log(stats.errors.AWS.signedUrl); // 70
resetValuesToZero(stats);
console.log(stats.errors.AWS.signedUrl); // 0

关于javascript - 遍历在nodeJs中具有嵌套对象的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33112450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com