Javascript filter()返回不同的结果
所以,我的代码中有这个函数:Javascript filter()返回不同的结果,javascript,Javascript,所以,我的代码中有这个函数: filterByWeek(data) { // so just like with the days, here we want to get a limited amount of data (last 6 weeks or less); const weeksAgo6 = moment().startOf('week').subtract(6, 'weeks').toDate(); console.log('data', data);
filterByWeek(data) {
// so just like with the days, here we want to get a limited amount of data (last 6 weeks or less);
const weeksAgo6 = moment().startOf('week').subtract(6, 'weeks').toDate();
console.log('data', data);
const filteredData = data.filter((item) => moment(item.date).isAfter(weeksAgo6));
console.log('filter test1', data.filter((item) => moment(item.date).isAfter(weeksAgo6)));
console.log('filter test2', filteredData);
return filteredData;
}
data参数是一个数组,其对象如下所示:
{
date: "2019-07-21T14:03:37.759Z",
_id: "5d3b29e7e7e5db358c4ec482",
exercise: "5d35da3142c6445078cd03f2",
oneRM: 93
}
在这个数组中的所有对象中,我想筛选出日期早于6周的对象。我使用Array.filter()函数来实现这一点。基于console.log过滤器测试1
它应该可以工作。但是我尝试console.log过滤测试2
,它返回一个空数组。有人知道是什么原因造成的吗
result console.logfilter test 1
:我预期的结果
[{
"date": "2019-07-20T14:03:37.759Z",
"_id": "5d3b0876e7e5db358c4ec47b",
"exercise": "5d35da3142c6445078cd03f2",
"oneRM": 86
},
{
"date": "2019-07-21T14:03:37.759Z",
"_id": "5d3b29e7e7e5db358c4ec482",
"exercise": "5d35da3142c6445078cd03f2",
"oneRM": 93
},
{
"date": "2019-07-24T14:03:37.759Z",
"_id": "5d3b3896e7e5db358c4ec48b",
"exercise": "5d35da3142c6445078cd03f2",
"oneRM": 89
}]
Result console.logfilter test 2
:一个空数组,尽管我认为我记录了相同的内容
无法再现您的问题,两个(test1和test2)
控制台。log
语句记录相同的输出:
const数据=[{
“日期”:“2019-07-20T14:03:37.759Z”,
“_id”:“5d3b0876e7e5db358c4ec47b”,
“练习”:“5d35da3142c6445078cd03f2”,
“oneRM”:86
},
{
“日期”:“2019-07-21T14:03:37.759Z”,
“_id”:“5d3b29e7e7e5db358c4ec482”,
“练习”:“5d35da3142c6445078cd03f2”,
“oneRM”:93
},
{
“日期”:“2019-07-24T14:03:37.759Z”,
“_id”:“5d3b3896e7e5db358c4ec48b”,
“练习”:“5d35da3142c6445078cd03f2”,
“oneRM”:89
}];
函数过滤器每周(数据){
//因此,就像白天一样,我们希望获得有限数量的数据(过去6周或更短时间);
const weeksAgo6=矩().startOf('week')。减去(6,'weeks').toDate();
console.log('data',data);
const filteredData=data.filter((项)=>moment(项.date.isAfter(weeksAgo6));
log('filter test1',data.filter((项)=>moment(项.日期).isAfter(weeksAgo6));
log('filterst2',filteredData);
返回过滤器数据;
};
过滤周(数据)代码>
提供一把工作小提琴。另外,在第二次调用之前尝试记录它,查看它包含的内容。尝试将其减少到一个值。不过,数据在后台发生变化的可能性有多大?您的代码只不过是一个小小的建议—最好是打断长行—它使代码更易于阅读。