【问题标题】:How to get values from these objects [duplicate]如何从这些对象中获取值[重复]
【发布时间】:2021-06-15 12:41:16
【问题描述】:

我正在努力实现它就像 a:1,b:2:,c:3,e:4,g:5,h:6 但没有成功。

面临这个错误。但这是最好的方法。

const input = {
  a: 1,
  b: 2,
  c: 3,
  d: {
    e: 4,
    f: {
      g: 5,
      h: 6
    }
  }
}


const getValue = (values) => {
  for (let i in Object.keys(values)) {
    if (Object.keys(values[Object.keys(values)[i]]).length > 0) {
      console.log('v', Object.keys(values)[i])
      getValue(Object.keys(values)[i])
    } else {
      //        console.log(Object.keys(values)[i],Object.values(values)[i])
    }
  }
}
getValue(input)

【问题讨论】:

    标签: javascript loops


    【解决方案1】:

    您可以遍历对象的每个键,并为对象值递归调用您的 getValue() 函数。

    const input = { a:1, b:2, c:3, d:{ e:4, f:{ g:5, h:6 } } } 
    
    const getValue = (values) => { 
      for (const key of Object.keys(values)) { 
        if(typeof values[key] === 'object' && values[key] !== null) {
          getValue(values[key]);
        } else {
          console.log(`${key}: ${values[key]}`);
        }
      }
    }
    
    getValue(input);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案2】:

      您可以使用递归来获得所需的结果。

      const input = {
        a: 1,
        b: 2,
        c: 3,
        d: {
          e: 4,
          f: {
            g: 5,
            h: 6,
          },
        },
      };
      
      const result = {};
      function getValues(obj) {
        for (let key in obj) {
          if (typeof obj[key] !== `object`) result[key] = obj[key];
          else getValues(obj[key]);
        }
      }
      
      getValues(input);
      console.log(result);

      【讨论】:

        【解决方案3】:

        编辑:你可以做这样的事情

         const input = {a:1,b:2,c:3,d:{e:4,f:{g:5,h:6 }}}
            
            
            Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(input))
        
        
        //{a: 1, b: 2, c: 3, e: 4, g: 5, …} 
        

        您可以查看更多详情here

        【讨论】:

        • 预期结果应该是a:1,b:2:,c:3,e:4,g:5,h:6
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 2019-04-16
        • 2023-03-12
        • 2021-11-17
        • 1970-01-01
        • 2020-07-17
        相关资源
        最近更新 更多