javascript - 计算对象和所有子对象中的字符串总数

标签 javascript jquery

我有一个可能包含对象的对象(反过来可能包含也可能不包含对象,等等),并抛出字符串,如下所示:

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/

相关文章:

javascript - 如何定位 JSON 文件中的特定对象

javascript - 使用倍增组合框中的触发器显示或隐藏组件

jquery - 获取href值,存储在变量中并删除http ://

javascript - 如何创建带有边框和背景属性的三 Angular 形 div?

javascript - 根据标题更改表格单元格的背景颜色

javascript - 将 jquery 变量与字符串连接起来

javascript - 是否可以在 Mocha 测试中使用 ES6 模块?

javascript - 如何修复我的 CSS 并使我的网站看起来像博客或杂志?

javascript - Node JS 和 C# 中的 AES 加密给出了不同的结果

javascript - jquery如何指定多个选择器