我是Javascript的新手,我通常需要处理对象和数组之间的转换,但是如何在ES6 / 7中更优雅或更干净,例如使用Spread syntax
或lodash
..而不是用于循环迭代。(因为我不喜欢可变的东西。)
我想转换下面的对象:
{
book: {
1001: 'a',
1002: 'b',
1003: 'c'
},
game: {
1001: 'a'
}
}
到下面的对象数组:
[
{
category: 'book',
item: [
{ id: 1001, name: 'a' },
{ id: 1002, name: 'b' },
{ id: 1003, name: 'c' }
]
},
{
category: 'game',
item: [
{ id: 1001, name: 'a' }
]
}
]
答案 0 :(得分:2)
您可以构建新对象并将内部对象映射为新项目。
var data = { book: { 1001: 'a', 1002: 'b', 1003: 'c' }, game: { 1001: 'a' } },
result = Object
.entries(data)
.map(([category, item ]) =>
({ category, item: Object.entries(item).map(([id, name]) => ({ id, name })) }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }