我有一个可能包含对象的对象(反过来可能包含也可能不包含对象,等等),并抛出字符串,如下所示:
var obj = {
"foo": "hello",
"bar": "hi",
"test": {
"foo": "foo"
"bar": {
"test": "hi",
"hello": "howdy"
}
}
}
我想要做的是计算整个 obj 对象及其子对象中的字符串数量。在此示例中,正确答案为 5。
此站点上有关计算对象中的键的众多主题都建议使用 .hasOwnProperty
循环或新的 Object.keys(obj)
方式,但是它们都不是递归的,并且它们都对子对象本身进行计数。
实现这一目标的最佳方法是什么?
最佳答案
您可以创建递归函数来循环嵌套对象并返回计数。
var obj = {
"foo": "hello",
"bar": "hi",
"test": {
"foo": "foo",
"bar": {
"test": "hi",
"hello": "howdy"
}
}
}
function countS(data) {
var c = 0;
for (var i in data) {
if (typeof data[i] == 'object') c += countS(data[i]);
if (typeof data[i] == 'string') c += 1
}
return c;
}
console.log(countS(obj))
关于javascript - 计算对象和所有子对象中的字符串总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41576167/