所以我从Google电子表格中接收数据。我需要映射它们(员工),然后格式化我收到的日期(MomentJS),然后将该日期与存储在另一个数组(testArr)中的现有日期列表进行比较,如果其中任何一个匹配,我需要返回员工的姓名(x.name)
当我在console.log()时,我得到了正确的值,但是当我返回时却没有。 当我返回时,我得到了未定义,因为我猜我正在使用.map函数,但是替代方案是什么。
这是我有史以来的第一个Stackoverflow问题,所以提前多多谢谢你们:)
let testArr = [3-2011, 5-2017, etc ...];
const finalForamting = () => {
return (employees.map(emp => {
testArr.filter(item => {
if(moment(emp.startdate).format('M-YYYY') === item) {
console.log(emp.name) --> TOM, MARK, ETC ...
return emp.name ------> undefined
}
})
)
)}
答案 0 :(得分:2)
我建议你先创建一个空的arry,然后在符合你的条件时推送你感兴趣的名字。
另外还有一些改进:
1)使用isSame比较momentjs日期
2)使用some检查至少有一个项目是否符合某个条件
const result = [];
employees.forEach(emp => {
if(testArr.some(item => moment(emp.startDate).format('M-YYYY').isSame(item)) {
result.push(emp.name);
}
});
console.log(result);
PS:欢迎来到SO:)
答案 1 :(得分:0)
filter
功能不起作用。请更新您的代码,如下所示
...
testArr.filter(item => moment(emp.startdate).format('M-YYYY') === item)
...