用该对象的属性替换命名对象

时间:2016-08-01 17:17:28

标签: javascript object

我一直在修补并且正在寻找循环等,然后认为可能有更快的方法来做到这一点。然后我迷失在lodash docs中......

无论如何,我想要运行以下对象 -

{ 
  stuff: { 
    thing1: 'value1',
    thing2: 'value2',
    thing3: 'value3'
  },
  something: 'value4'
}

- 并返回:

{
  thing1: 'value1',
  thing2: 'value2',
  thing3: 'value3',
  something: 'value4'
}

也就是说,我希望消除stuff级别并将所有内容都视为兄弟姐妹。我的意思是简单/简洁的方式。我尝试了_.flatten._flattenDepth,但它们只适用于数组(返回一个空数组)。

由于

1 个答案:

答案 0 :(得分:1)

我认为你最好/唯一的赌注是一个循环。

function flattenObject(obj, res) {
  res = res ? res : {};
  Object.keys(obj).forEach(function(d) {
        if (typeof obj[d] === 'object') return flattenObject(obj[d], res);
        res[d] = obj[d];
    });

  return res;
}


console.log(flattenObject(a));