为什么这不起作用?
var numbers = [1,2,3,4,5,6,7,8];
var stringifiedNumbers = numbers.map(function(x) {
JSON.stringify(x);
})
console.log(stringifiedNumbers);
Run Code Online (Sandbox Code Playgroud)
为什么我的输出:
数组[未定义,未定义,未定义,未定义,未定义,未定义,未定义,未定义]
您没有返回字符串化内容,因此该函数将数组转换为undefined
s.Array#map
根据传递的回调的返回值转换每个数组元素,因为你的返回没有任何东西,它将它们转换为undefined
:
var numbers = [1, 2, 3, 4, 5, 6, 7, 8];
var stringifiedNumbers = numbers.map(function(x) {
return JSON.stringify(x);
})
console.log(stringifiedNumbers);
Run Code Online (Sandbox Code Playgroud)
您可以使用箭头功能缩短它:
var stringifiedNumbers = numbers.map(x => JSON.stringify(x));
Run Code Online (Sandbox Code Playgroud)
因为在上面的示例中只使用了一个return语句,所以可以使用箭头函数隐式返回表达式.您甚至可以将其缩短为:
numbers.map(JSON.stringify);
Run Code Online (Sandbox Code Playgroud)
因为它隐式传递参数并删除变量.