我有:
const weekdays = eachDay.map((day) => format(day, 'EEE'));
let ret = { Su: '', Mo: '', Tu: '', We: '', Th: '', Fr: '', Sa: '' };
weekdays.forEach((day, index) => {
ret[Object.keys(ret)[index] as DaysOfWeekMui] = day;
});
我的一个队友说我可以使用一个reduce
来避免预定义ret
。但是我不知道他的意思。任何帮助都将非常感谢。
先谢了。
2条答案
按热度按时间mefy6pfw1#
我使用
reduce
主要是当我想把一个列表转换成一个单一的东西。因此,在您的示例中,您将迭代
weekdays
列表并将其转换为对象。要重写现有代码,可以使用reduce,如下所示:
这段代码将在你的工作日中迭代并调用reduce函数,该函数接收
acc
,它是最后一次迭代的结果(或者第一次迭代的初始值),以及你正在调用reduce的列表中的item
。给定以下列表:
["Monday", "Tuesday"]
reduce
函数的结果将是:zyfwsgd62#
Array#reduce
有两个参数:回调和初始值。在您的示例中,ret
将是您的初始值,并且您的代码可以被重构为: