4 回答

TA貢獻1808條經(jīng)驗 獲得超4個贊
我不得不同意您編寫的第一個實現(xiàn)看起來更直觀,但是,第二個方法可以用不同的方式編寫。
通過第一次調(diào)用new Array(53),您創(chuàng)建了一個包含 53 個元素的數(shù)組。通過然后調(diào)用.map((_, index) => {}),您可以訪問索引變量(使用_,item因為它是undefined無論如何)。您不必通過傳播來克隆新數(shù)組,因此只需使用此代碼即可:
const filters = new Array(53).map((_, index) => ({
text: getStartDate(index, new Date().getFullYear()),
value: getStartDate(index, new Date().getFullYear())
}));

TA貢獻1735條經(jīng)驗 獲得超5個贊
你喜歡哪種風格最終是一個品味問題。如果你更喜歡第二種——更像函數(shù)式——的風格,你可以將其簡化如下:
const year = new Date().getFullYear();
const filters2 = Array.from(new Array(53), (_, i) => {
const startDate = getStartDate(i, year);
return {text: startDate, value: startDate};
});
它替換[...Array(53).keys()].map()為更合適Array.from的值,并且不會多次評估相同的值。這種簡單情況下的性能差異可以忽略不計,您應該使用對您和您的團隊更易讀的代碼。

TA貢獻1853條經(jīng)驗 獲得超9個贊
你想用一個初始值來初始化一個數(shù)組嗎?這就是Array.fill()的用例
const filters2 = new Array(53).fill({
text: getStartDate(0, new Date().getFullYear()),
value: getStartDate(0, new Date().getFullYear())
});

TA貢獻1790條經(jīng)驗 獲得超9個贊
我更喜歡您的old變體,因為它對我來說更具可讀性。在我看來,代碼應該更具可讀性而不是更短。
此外,根據(jù)測試,old 變體更快:
const filters = [];
for (let i = 1; i < 54; i += 1) {
const currentDateDisplay = getStartDate(i, new Date().getFullYear());
filters.push({ text: currentDateDisplay, value: currentDateDisplay });
}
添加回答
舉報