为什么这不起作用?
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]
答案 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);
因为它隐式传递参数并删除变量。