【问题标题】:How to deepscan object values including children arrays如何对包括子数组在内的对象值进行深度扫描
【发布时间】:2019-06-05 13:38:00
【问题描述】:

我正在尝试获取对象的所有值。对象还包含数组,而这些对象数组包含数组。

const iterate = (obj) => {
    Object.keys(obj).forEach(key => {
        console.log(`key: ${key}, value: ${obj[key]}`)

        if (typeof obj[key] === 'object') {
            iterate(obj[key])
        }
    })
}

目前它只显示“更高级别”的对象

例如,如果我有一个

class foo;
a: string;
b: string;
c SomeObject[];

SomeObject 部分始终只是一个“对象”。但我也需要这些对象的值。

【问题讨论】:

  • 欢迎来到 Stack Overflow!通常,确保问题中的代码构成minimal reproducible example 是有帮助的,这样其他人就可以轻松地看到您的问题是什么。在这种情况下,不清楚您所说的“更高级别”对象是什么意思。您能否包含一个示例对象以及您期望看到的内容与您实际看到的内容?祝你好运!
  • 它有效。 “只有更高级别的对象”是什么意思?在这种情况下应该返回什么: iterate({ a: 'a', b: { c: 'c', d: 'd' }})
  • 更新主帖

标签: typescript iteration


【解决方案1】:

只要检查它是否是一个数组并专门处理它:

const iterate = (obj) => {
    Object.keys(obj).forEach(key => {
        const value = obj[key];
        console.log(`key: ${key}, value: ${value}`)

        if (Array.isArray(obj)) {
            for (let arrayItem of obj) {
                iterate(arrayItem);
            }
        }

        else if (typeof value === 'object') {
            iterate(value)
        }
    })
}

这应该适用于所有 JSON 文字,但不适用于集合或地图等内容。

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2016-09-01
    相关资源
    最近更新 更多