使用lodash将对象嵌套转换为包含键的对象数组

3

对于标题的解释不够清晰,我感到抱歉。

基本上,我想知道是否有更好的方式或更短的代码来完成我的工作。我最近开始使用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个回答

2
Lodash的_.map()可以迭代对象。传递给迭代函数的第二个参数是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>


你很棒,谢谢! - Yeonghun

0
使用 Object.entries.map

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);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接