使用.map函数对所有数组内容进行字符串化

tho*_*olo 1 javascript

为什么这不起作用?

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)

为什么我的输出:

数组[未定义,未定义,未定义,未定义,未定义,未定义,未定义,未定义]

Li3*_*357 5

您没有返回字符串化内容,因此该函数将数组转换为undefineds.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)

因为它隐式传递参数并删除变量.