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

时间:2017-05-11 12:17:07

标签: javascript

为什么这不起作用?



var numbers = [1,2,3,4,5,6,7,8];
var stringifiedNumbers = numbers.map(function(x) { 
   JSON.stringify(x);
})
console.log(stringifiedNumbers);




为什么我的输出:

  

Array [undefined,undefined,undefined,undefined,undefined,   undefined,undefined,undefined]

1 个答案:

答案 0 :(得分:5)

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




您可以使用arrow functions缩短此内容:

var stringifiedNumbers = numbers.map(x => JSON.stringify(x));

因为在上面的示例中只使用了一个return语句,所以可以使用箭头函数隐式返回表达式。您甚至可以将其缩短为:

numbers.map(JSON.stringify);

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