【发布时间】:2020-02-18 10:29:58
【问题描述】:
我有一个对象数组。每个对象都有一个日期属性。我正在尝试创建一个函数,如果项目的日期等于今天的日期,我将每个项目附加到一个新数组中。
另外,我不确定 for 循环是否是最有效的方法,但这个列表永远不会超过几百个项目。
我的功能:
todayListItems() {
const todayItems = [];
const todayDate = moment(new Date()).format('dd-mm-YYYY');
for (let i = 0; i < myArray.length; i++) {
const itemDate = moment(myArray[i].date).format('dd-mm-YYYY');
if (itemDate === todayDate) {
todayItems.push(myArray[i]);
}
}
console.log(todayItems);
return todayItems;
}
此函数运行,但即使有一个具有今天日期的项目,也不会将任何内容推送到数组中。
【问题讨论】:
-
为什么不只是用户
Array.prototype.filter因为这似乎正是您正在做的事情?至于它不起作用,您有没有机会给我们提供意见? -
不确定 for 循环是否是最有效的方法性能,
for是最好的。为了可读性,filter更受欢迎。 -
建议您的代码。由于您使用的是 javascript,因此您可以将其用于更短的代码。 myArray.forEach(data => { }) 使用 forEach 而不是 for 循环
-
@RenatoManalili forEach 当你想过滤一个数组时简直是疯了;)
-
@Rajesh
filter只是for循环的一些语法糖。它不再有效。filter、forEach和for都以略微不同的方式做同样的事情,没有“更好”
标签: javascript momentjs