首页 > 解决方案 > 这是将一个数组分成两个数组的最有效方法吗?

问题描述

我有一点心理障碍,但是有没有一种更有效的方法可以从另一个数组中的值创建 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 个可以使用的新数组,但这似乎不是最好的方法。我是对的还是错的?

标签: javascriptarraysecmascript-6

解决方案


您可以使用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);


推荐阅读