console.log返回值,return语句是未定义的?

时间:2018-04-02 03:34:38

标签: javascript reactjs google-sheets

所以我从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
             }
         })
    )
)}

2 个答案:

答案 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)
...