【发布时间】:2020-08-03 23:29:07
【问题描述】:
我已经重构了这段代码,但仍然觉得这可以写得更好(没有外部库)。有什么建议?
// Old
const filters = [];
for (let i = 1; i < 54; i += 1) {
const currentDateDisplay = getStartDate(i, new Date().getFullYear());
filters.push({ text: currentDateDisplay, value: currentDateDisplay });
}
// New
const filters2 = [...Array(53).keys()].map((item) => ({
text: getStartDate(item, new Date().getFullYear()),
value: getStartDate(item, new Date().getFullYear()),
}));
编辑:看起来有时使用旧的 for 循环会更好,尤其是在性能方面。感谢您的建议。
【问题讨论】:
-
第一个比较初级,
better -
将
getStartDate(item, new Date().getFullYear())保存在一个变量中,而不是重复两次 -
你的外部库在哪里?您的代码示例不完整。
-
为什么第一个例子使用
getDateDisplay而第二个没有?getStartDate究竟返回了什么?如果它是一个对象,它是否应该是对text和value属性的同一对象的共享引用? -
如果您只创建处理数组内的 53 个对象,则不必担心性能。选择您更容易理解的内容,然后然后担心它会成为您应用程序的瓶颈。
标签: javascript arrays ecmascript-6 ecmascript-2016