Array.prototype.foreach()

Array.prototype.foreach()

遍历,不会改变原数组,没有返回值

注意了,数组这些api里面都是回调函数!所以这个foreach你就别指望return能结束它

foreach()与map()方法极为相似,区别就是map()方法会返回一个新数组,而foreach()方法不返回任何东西

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
words.forEach(item => {
    console.log(item);
});
  • 手动实现(必须要掌握,不要让它成为曾经会写的东西)
Array.prototype.forEach = function(callback, thisArg) {
    if(typeof callback != 'function') throw new TypeError(callback + 'must be a function')
    let arr = this
    let thisValue = arguments[1] || this
    for(let i = 0; i < arr.length; i++) {
        callback.call(thisValue, arr[i], i, arr)
        console.log(111);
    }
};
[1,2,3].forEach(item => {
    console.log(item);
},100)
/*
* 判断第一个参数是否为函数
* arguments[1]的意思是否接收到了第二个参数,如果没有就用本来的this,就是你平常用数组系列方法时,除了传一个回调函数以外,还可以传一个可选参数,用作this的值。这里比较严谨,因为判断了是否有这个可选参数,挺牛的
* 如果有,则改变this的指向
* 我打印了一个111,结果还真输出了,就证明真的重写了这个foreach方法,牛
* 因为是数组去调用的foreach方法,所以this指向的是一个数组,自然就有arr[i]的用法,你也可以输出this,你会发现它就是[1,2,3]
* foreach它与fori最大的区别就是有回调函数,其实就是在fori中调用回调函数,这是它的实现思路,理解了这个,多半能自己完成了
* */
posted @   朱在春  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示