我目前正在尝试返回animals
数组中每个字符串的每个第一个字符,并使用速记箭头函数语法存储在名为secretMessage
的新数组中。但是,我遇到了以下错误。
错误
/home/ccuser/workspace/learn-javascript-iterators-E3/main.js:5
secretMessage.map(animal => return animal[0]);
^^^^^^
SyntaxError: Unexpected token return
的js
let animals = ['Hen', 'elephant', 'llama', 'leopard', 'ostrich', 'Whale', 'octopus', 'rabbit', 'lion', 'dog'];
secretMessage.map(animal => return animal[0]);
console.log(secretMessage.join(''));
为什么会这样?以及如何解决此错误?
答案 0 :(得分:3)
arrow function中的表达式是返回值。
在简洁的正文中,只需要一个表达式,并附加一个隐式返回。在块体中,您必须使用明确的
return
语句。
您可以删除单词return
。
var secretMessage = animals.map(animal => animal[0]);
答案 1 :(得分:0)
删除return
一词。
secretMessage.map(animal => animal[0]);
胖箭头功能会自动返回表达式。
如果函数包含在块中,则只需要返回:
secretMessage.map(animal => {
return animal[0];
});
答案 2 :(得分:0)
从箭头功能
中删除return
secretMessage.map(animal => animal[0]);
或包含块
secretMessage.map(animal => { return animal[0] });
问题代码的另一个问题是.map()
的结果未设置为变量,导致.map()
调用仅迭代secretMessage
,但未定义结果一个新的阵列。 .map()
的结果需要在变量标识符处定义。您还可以使用对象解构来缩短代码
let animals = ['Hen', 'elephant', 'llama', 'leopard', 'ostrich', 'Whale', 'octopus', 'rabbit', 'lion', 'dog'];
let secretMessage = animals.map(({0:s}) => s);
console.log(secretMessage.join(""));
答案 3 :(得分:0)
如果您没有大括号的单行箭头功能,则不需要返回。
答案 4 :(得分:0)
你可以这样做
secretMessage = numbers.map(function(n){return n[0]})