javascript - 这是将一个数组拆分为 2 个数组的最有效方法吗?

标签 javascript arrays ecmascript-6

我有点精神障碍,但是否有更有效的方法从另一个数组中的值创建 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);

关于javascript - 这是将一个数组拆分为 2 个数组的最有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561067/

相关文章:

javascript - 具有远程数据源的 Kendo TreeView 仅填充根元素

javascript - angular2 路由守卫验证

ios - 检索/设置数组中 UIView 对象的值

javascript - 我可以将 .map 数组转换为带双引号的逗号分隔数组吗?

javascript - Leaflet - 覆盖点击事件的图层

javascript - NodeJS Express : How can I get my object to build completely before sending it in the response?

javascript - 背景图片的 CSS/JS 幻灯片

c - C 中的指针/数组问题

javascript - ES6 Map 的 Array.map 等价物是什么?

javascript - 如何避免在 React 上遍历?