lodash将对象的对象转换为对象数组,包括其中的键

时间:2018-03-24 00:30:02

标签: javascript lodash

抱歉对标题的解释不好。

基本上我想知道是否有更好的方法或更短的代码来完成我的工作。我最近开始使用lodash库。

所以,

我有一个像下面这样的对象的对象。

   {
    key1:{ firstname: john, lastname: doe}, 
    key2:{ firstname: david, lastname: smith},
   }

最终我想把它们作为以下对象数组。

   [
    {ID: key1, firstname: john, lastname: doe },
    {ID: key2, firstname: david, lastname: smith}
   ]

这就是我所做的。

const ArrayOfObjects = [];
    _.each(ObjectsOfObjects, (value, key) => {
        ArrayOfObjects.push({
            UID: key,
            ...value,
        });
    })

2 个答案:

答案 0 :(得分:1)

Lodash的_.map()可以迭代对象。传递给iteratee函数的第二个参数是key



const input = {
  key1:{ firstname: 'john', lastname: 'doe'}, 
  key2:{ firstname: 'david', lastname: 'smith'},
}

const result = _.map(input, (v, UID) => ({ UID, ...v }))

console.log(result)

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用Object.entries.map

&#13;
&#13;
const input = {
  key1:{ firstname: 'john', lastname: 'doe'}, 
  key2:{ firstname: 'david', lastname: 'smith'},
}
const transformed = Object.entries(input).map(([key, obj]) => Object.assign(obj, { ID: key }));
console.log(transformed);
&#13;
&#13;
&#13;