function commonFunction(x, y) {
return x * y * 2;
}
var ints = [1,2,3];
var result = ints.map(commonFunction);
//result = [0,4,12]
纠正我,如果我错了,commonFunction
期待2个参数,并且通过在commonFunction
内调用Array.map
,第一个参数会自动填充数组的每个人。
如上所示,未提供第二个参数,为什么会产生[0,4,12]
的结果?
我了解为了获得正确的结果,我可以使用bind
,如下所示:
var result = ints.map(commonFunction.bind(this,3));
//result = [6,12,18]
答案 0 :(得分:1)
Map使用3个参数调用commonFunction,第二个是索引。
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
这就是你得到[1*0*2, 2*1*2, 3*2*2]
在commonFunction.bind(this,3)
之后你得到一个总是得到x = 3的函数,但这真的很奇怪,你应该只做以下几点:
map(value => commonFunction(3, value))
答案 1 :(得分:1)
.map()
回调的第二个参数是数组索引,因此您可以将其作为您的' y'每次都有价值。 (只是为了完整性,虽然它与问题没有直接关系,但第三个参数是完整数组:)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
function commonFunction(x, y, z) {
console.log("X: ",x); // the array value
console.log("Y: ",y); // the array index
console.log("Z: ",z); // the full array
return x * y * 2;
}
var ints = [1,2,3];
var result = ints.map(commonFunction);