首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在内部将每个数组元素传递给javascript中"map“函数中使用的回调函数

如何在内部将每个数组元素传递给javascript中"map“函数中使用的回调函数
EN

Stack Overflow用户
提问于 2019-05-01 09:09:16
回答 3查看 73关注 0票数 2

如何在内部将每个数组元素传递给javascript中"map“函数中使用的回调函数。

代码语言:javascript
复制
incrementByOne = function (element) {
     return element + 1;
   }

myArray = [1,2,3,4];

myArray.map(incrementByOne); // returns [2,3,4,5]

在上面的代码中,我们将回调函数"incrementByOne“传递给"map”函数。但我很想知道函数"incrementByOne“是如何将每个数组元素作为其参数的。我知道我们使用带mayArray的点运算符来调用map函数,但是它如何使回调函数能够接受每个数组元素作为其参数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-01 09:11:43

当对对象调用方法时,该方法可以检查调用该方法的对象。.map函数正在迭代其this (数组),并使用每个元素调用回调。您可以自己实现这样的基本功能:

代码语言:javascript
复制
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]

票数 2
EN

Stack Overflow用户

发布于 2019-05-01 09:15:59

mapArray方法中定义在Array.prototype上。在任何对象方法中,都可以使用this关键字访问对象。下面是简单自定义映射方法的示例。

代码语言:javascript
复制
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));

票数 1
EN

Stack Overflow用户

发布于 2019-05-01 10:12:59

代码语言:javascript
复制
myArray = [1, 2, 3, 4]

这是map的语法。

代码语言:javascript
复制
myArray.map(function(val) {
   console.log(val); // Will give you 1 2 3 4
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55933947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档