Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript filter()返回不同的结果_Javascript - Fatal编程技术网

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.log
filter 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.log
filter 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);
返回过滤器数据;
};
过滤周(数据)

提供一把工作小提琴。另外,在第二次调用之前尝试记录它,查看它包含的内容。尝试将其减少到一个值。不过,数据在后台发生变化的可能性有多大?您的代码只不过是一个小小的建议—最好是打断长行—它使代码更易于阅读。