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

时间:2016-09-01 20:23:05

标签: javascript arrays

为什么

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

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

3 个答案:

答案 0 :(得分:2)

您需要在()

中包装对象

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

答案 1 :(得分:2)

由于

  • 您使用大括号block statement

  • letterlabel

  • x只是一个没有动作的值。

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

      

    要返回默认值以外的值,函数必须具有return语句,该语句指定要返回的值。没有return语句的函数将返回默认值。如果使用constructor关键字调用new,则默认值为其此参数的值。对于所有其他函数,默认返回值是未定义的。

正确调用映射对象。

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

答案 2 :(得分:1)

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

因此没有{}的箭头函数将返回表达式的计算值。