如何在内部将每个数组元素传递给javascript中"map“函数中使用的回调函数。
incrementByOne = function (element) {
return element + 1;
}
myArray = [1,2,3,4];
myArray.map(incrementByOne); // returns [2,3,4,5]在上面的代码中,我们将回调函数"incrementByOne“传递给"map”函数。但我很想知道函数"incrementByOne“是如何将每个数组元素作为其参数的。我知道我们使用带mayArray的点运算符来调用map函数,但是它如何使回调函数能够接受每个数组元素作为其参数。
发布于 2019-05-01 09:11:43
当对对象调用方法时,该方法可以检查调用该方法的对象。.map函数正在迭代其this (数组),并使用每个元素调用回调。您可以自己实现这样的基本功能:
Array.prototype.myMap = function(callback) {
const newArray = [];
for (let i = 0; i < this.length; i++) {
newArray.push(callback(this[i]));
}
return newArray;
};
const incrementByOne = function(element) {
return element + 1;
}
const myArray = [1, 2, 3, 4];
console.log(myArray.myMap(incrementByOne)); // returns [2,3,4,5]
发布于 2019-05-01 09:15:59
map在Array方法中定义在Array.prototype上。在任何对象方法中,都可以使用this关键字访问对象。下面是简单自定义映射方法的示例。
function map(cb){
let res = [];
for(let i = 0;i<this.length;i++){
//This is line where the element and index gets passed to the callack.
res[i] = cb(this[i],i);
}
return res
}
Object.defineProperty(Array.prototype,'map2',{
writable:true,
value:map
})
let arr = [1,2,3];
console.log(arr.map2(e => e+1));
发布于 2019-05-01 10:12:59
myArray = [1, 2, 3, 4]这是map的语法。
myArray.map(function(val) {
console.log(val); // Will give you 1 2 3 4
})https://stackoverflow.com/questions/55933947
复制相似问题