javascript - 这是将一个数组分成两个数组的最有效方法吗?
问题描述
我有一点心理障碍,但是有没有一种更有效的方法可以从另一个数组中的值创建 2 个新数组?
这是我当前的示例,虽然它有效,但我觉得可能有更有效的方法;
原始数组;
const daily = [
{event_date: "2019-10-18", listener: 3},
{event_date: "2019-10-19", listener: 3},
{event_date: "2019-10-20", listener: 1}
];
我需要做的是创建 2 个新数组,一个带有event_date
值,另一个带有listener
值。
我正在使用map
这样的方式来实现这一目标;
const dailyLabels = daily.map((data) => {
return data.event_date;
});
const dailyData = daily.map((data) => {
return data.listener
});
现在我有 2 个可以使用的新数组,但这似乎不是最好的方法。我是对的还是错的?
解决方案
您可以使用Array.reduce因此您只需遍历数组的长度一次。
const daily = [
{ event_date: "2019-10-18", listener: 3 },
{ event_date: "2019-10-19", listener: 3 },
{ event_date: "2019-10-20", listener: 1 }
];
const { dailyLabels, dailyData } = daily.reduce(
(result, { event_date, listener }) => {
result.dailyLabels.push(event_date);
result.dailyData.push(listener);
return result;
},
{ dailyLabels: [], dailyData: [] }
);
console.log(dailyLabels);
console.log(dailyData);
推荐阅读
- android - android中的动态脚本
- flutter - 如何在 Flutter 中加密 SQLite 数据库?
- html - 里面的分页符在我的打印中不起作用
- java - 在 Android Studio 中调用外部类
- c# - 解析连接对象的值
- hyperledger-fabric - hyperledger first-network sample BAD_REQUEST -- 授权更新错误
- c# - 在确定的时间后退出 TcpLIsener.AcceptTcpClient()
- java - java.lang.ClassCastException:java.lang.String 无法转换为 java.lang.Long(休眠)
- docker - 如何获取用于运行 docker 容器的命令行?
- java - Java - 替换文件中的特定行而不将所有数据复制到另一个文件