【发布时间】:2020-11-23 03:38:43
【问题描述】:
下面的函数将记录newData 的值,但在调用时返回undefined。有谁知道这可能是为什么?此外,我们将非常感谢您对函数本身的任何反馈!
export const filterByDateTimeRange = (data=[{}], timeKey=[], startTime=moment(), stopTime=moment()) => {
let newData = [];
let i = 0;
for(const item of data) {
let time;
let index = 0
timeKey.map(key => {
time ? time = time[key] : time = item[key];
index++
if(index === timeKey.length) {
if(moment(time).isBetween(startTime, stopTime, undefined, '[)')) {
newData.push(item)
};
i++;
if(i === data.length) {
console.log(newData);
return (newData);
}
}
})
}
}
【问题讨论】:
-
你永远不会真正返回 newData。你映射它,但从不返回它。请注意,在映射方法中返回不计算在内。 Map 返回一个新数组,其中您返回的值取代了原始数组的成员。但如前所述,你永远不会用它做任何事情。
-
如果您只是在最后一个大括号之前添加了
return newData;,我很确定您的代码会按照您的预期工作。尽管如此,当您从未真正使用过结果时,我不会使用.map();我会使用.forEach()。
标签: javascript arrays for-loop return undefined