javascript - es6/7 中的 javascript 对象数组转换
问题描述
我是 Javascript 的新手,我通常需要处理对象和数组之间的转换,但是我怎样才能在 ES6/7 中做到更优雅或更干净,例如使用Spread syntax
或lodash
......,而不是使用 for 循环迭代。(因为我不'不喜欢可变的东西。)
我想转换以下对象:
{
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' }
]
}
]
解决方案
您可以构建新对象并将内部对象映射为新项目。
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; }
推荐阅读
- javascript - 如何使用兄弟姐妹替代方法获得 jquery 效果?
- python-3.x - Python3 语音转文本
- sql - SQL:状态在 1 和 2 之间翻转;选择所有状态,自上次为 1 以来为 2
- c++ - nan() 函数的参数
- html - 在 Angular 中将单词转换为图标
- c++ - 当调用钩子函数 C++ 时,使用 MS Detours 钩子会崩溃
- asynchronous - 特征绑定`tokio::net::tcp::stream::TcpStream: tokio_io::async_read::AsyncRead`不满足
- azure-webjobs - 在本地服务器上运行 Azure WebJob
- android - Android 应用程序在混淆后崩溃,也混淆了调试版本中收到的日志
- c# - 如何对从 LINQ 查询返回的 SQL Server 返回的同一结果集的结果进行分组和连接?