【问题标题】:.find within .map() returns undefined - JavaScript ES6 [duplicate].map() 中的 .find 返回未定义 - JavaScript ES6 [重复]
【发布时间】:2018-10-28 09:13:04
【问题描述】:
return valuesArray.map((objValue) => {
         Dataset.find(dataObj => dataObj.value === objValue)
});

它返回未定义。但是,如果我使用 forEach 并将值推送到一个新数组中,它就可以工作。

【问题讨论】:

  • 你没有返回任何东西。要么使用return 要么放弃卷发
  • @CodeBreaker 这种行为很奇怪。即使我也在做同样的事情并且我变得不确定,即使我已经正确返回。 @Daniel A. White 你能帮忙吗? resources.map((resource) => members.find((member) => member.identifier === resource))
  • @Vipulw 请用minimal reproducible example发布一个新问题

标签: javascript ecmascript-6 array.prototype.map


【解决方案1】:

您也可以通过filter 查询undefined

return valuesArray.map((objValue) => {
        return Dataset.find(dataObj => dataObj.value === objValue)
}).filter(y => y != undefined);

所以它也不会从valuesArray 返回undefined

【讨论】:

    【解决方案2】:

    您缺少返回值。

    对于匿名函数,如果将函数用大括号括起来,则必须显式返回一个值。

    • () => 1: 返回 1
    • () => { 1 }:返回未定义
    • () => ({}):返回{}

    要回答您的问题,这里有两种可行的方法:

    return valuesArray.map((objValue) => {
             return Dataset.find(dataObj => dataObj.value === objValue)
    });
    

    return valuesArray.map((objValue) => Dataset.find(dataObj => dataObj.value === objValue));
    

    【讨论】:

    • 考虑添加解释为什么 OP 的代码不起作用以及您所做的更改
    猜你喜欢
    • 2017-07-06
    • 2018-01-02
    • 2017-10-08
    • 1970-01-01
    • 2013-06-26
    • 2014-03-05
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多