【问题标题】:How to expand single level nested hashes on the fly?如何动态扩展单级嵌套哈希?
【发布时间】:2021-04-10 18:02:12
【问题描述】:

我有一个对象,其中一些键是嵌套的单级哈希。在这个例子中,只有b 是嵌套的。

const j = {
  a: 'A',
  b: {
    bb: 'BB',
    bbb: 'BBB',
    },
  c: 'C'
};

问题

我正在寻找的是一种循环对象的方法,如果键是嵌套对象,则改为打印其键。

a
bb
bbb
c

有人知道怎么做吗?

【问题讨论】:

    标签: javascript node.js ecmascript-6 javascript-objects


    【解决方案1】:

    您可以将递归flatMapObject.keys 一起使用。

    const j = {
      a: 'A',
      b: {
        bb: 'BB',
        bbb: 'BBB',
        },
      c: 'C'
    };
    const getKeys = o => Object.keys(o).flatMap(x => o[x] === Object(o[x]) 
          ? getKeys(o[x]) : x);
    console.log(getKeys(j));

    【讨论】:

      【解决方案2】:

      您可以使用Object.entriesflatMap

      const j = { a: 'A', b: { bb: 'BB', bbb: 'BBB' }, c: 'C' };
      
      function getOneLevelKeys(obj) {
        return Object.entries(obj)
          .flatMap(([key, value]) => typeof value === "object" ? Object.keys(value) : key);
      }
      
      console.log( getOneLevelKeys(j) );

      【讨论】:

        【解决方案3】:

        您可以递归地执行此操作:

        function printKeys(obj) {
            for (const [key, val] of Object.entries(obj)) {
                if (typeof val === "object") {
                    printKeys(val);
                } else {
                    console.log(key);
                }
            }
        }
        

        如果你最多只有一层嵌套,@blex 的答案可能会更好。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-08
          • 2017-05-29
          • 2011-06-14
          相关资源
          最近更新 更多