当应该返回对象数组时,数组映射返回未定义的数组

Array map returning array of undefined when should return array of objects

本文关键字:数组 返回 映射 未定义 对象      更新时间:2023-09-26

为什么

['a', 'b', 'c'].map((x) => { letter: x })返回一个未定义数组

['a', 'b', 'c'].map((x) => [{ letter: x }][0])返回正确的对象数组?

因为

  • 使用大括号作为块语句。

  • 您有letter作为标签。

  • x只是一个值,没有任何作用。

  • undefined的返回值是函数的标准返回值,没有任何带值的返回语句。

    要返回一个非默认值,函数必须有一个return语句来指定要返回的值。没有return语句的函数将返回一个默认值。在使用new关键字调用构造函数的情况下,默认值是其this形参的值。对于所有其他函数,默认返回值是undefined。

正确调用映射对象。

console.log(['a', 'b', 'c'].map(x => ({ letter: x })));

您需要在()中包装对象

var result = ['a', 'b', 'c'].map((x) => ({ letter: x }))
console.log(result)

缺少显式返回语句的函数将返回undefined。() => {}相当于function(){}x => x等价于function(x){ return x;}

所以没有{}的箭头函数将返回表达式的计算值