只是通过地图功能,不明白为什么我得到
[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
即使在提供this
值后使用回调,就像文档说的那样......
var numbers = [1,2,3,4,5,6,7,8];
var results = numbers.map(
function(foo){
console.log(foo * foo);
}, results
);
results();
谢谢!
答案 0 :(得分:3)
您传递给map()
的函数需要返回您之后的结果。
var numbers = [1, 2, 3, 4, 5, 6, 7, 8];
var results = numbers.map(function(num) {
return num * num;
});
console.log(numbers);
您的函数不会显式返回,因此它会在每次调用结束时返回undefined
。
map()
方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。
答案 1 :(得分:3)
这是一种更清洁的方式:
var numbers = [1,2,3,4,5,6,7,8];
var getValues = function(data){
console.log(data)
return data;
// do whatever with the array's values
}
numbers.map(getValues);
答案 2 :(得分:2)
使用
map
函数时,为什么会出现'未捕获的TypeError:结果不是函数'?
因为Array.protoypte.map
从不会返回一个函数。
15.4.4.19 Array.prototype.map ( callbackfn [ , thisArg ] )
callbackfn 应该是一个接受三个参数的函数。
map
对于数组中的每个元素,以递增方式调用 callbackfn 一次 从结果中订购并构造一个新的数组。