javascript - 按某些属性扩展对象
问题描述
我有一个这样的对象数组,这些对象由休息 API 输出,它本质上是每个 id 每小时每 15 分钟间隔的消息计数。
[
[
{id: 1, hour:0, interval_1: 2 ,interval_2: 1, interval_3: 3, interval_4: 0},
{id: 1, hour:1, interval_1: 2 ,interval_2: 1, interval_3: 3, interval_4: 0},
{id: 2, hour:0, interval_1: 5 ,interval_2: 1, interval_3: 3, interval_4: 3},
{id: 2, hour:1, interval_1: 3 ,interval_2: 1, interval_3: 3, interval_4: 0}
]
]
如何使用 JavaScript 将其转换为以下数组?
[
[
{id: 1, hour:0, interval_1: 2},
{id: 1, hour:0, interval_2: 1},
{id: 1, hour:0, interval_3: 3},
{id: 1, hour:0, interval_4: 0},
{id: 1, hour:1, interval_1: 2},
{id: 1, hour:1, interval_2: 1},
...
...
]
]
解决方案
您可以分离公共键并迭代其余属性以进行映射。
const
data = [{ id: 1, hour: 0, interval_1: 2, interval_2: 1, interval_3: 3, interval_4: 0 }, { id: 1, hour: 1, interval_1: 2, interval_2: 1, interval_3: 3, interval_4: 0 }, { id: 2, hour: 0, interval_1: 5, interval_2: 1, interval_3: 3, interval_4: 3 }, { id: 2, hour: 1, interval_1: 3, interval_2: 1, interval_3: 3, interval_4: 0 }],
result = data.flatMap(({ id, hour, ...o }) =>
Object.entries(o).map(([k, v]) => ({ id, hour, [k]: v }))
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- ruby-on-rails - 如何使用 RSpec Rails 4.0 测试具有特定 url 的 json 格式?
- java - Maven 无法将参数传递给 main
- c++ - 用最短的编码长度解决问题
- python - 使用多索引连接多个 .csv 数据帧
- python - ImportError:无法导入 PIL.Image。`load_img` 的使用需要 PIL 在 VSCode 中使用 keras
- awk - 从第一个到第 N 个匹配模式之间提取并退出 (gz, zcat | sed, awk, perl)
- reactjs - 在 React 中使用单个 onChange 处理程序处理多个输入
- java - 如何打开 Play 商店以显示给定其自定义 url 方案的应用程序?
- javascript - 你可以使用 Nodejs 的 Create-React-App npm start 吗?
- android - 提供捆绑包和 APK 时如何删除 APK