今天有点'不务正业',旧的没有写完又开新的,没办法 -0- 今天遇到这个特感兴趣嘛
入正题了

forEach 和 map 的区别

参考:http://blog.csdn.net/boysky0015/article/details/72983766
作者;boysky0015
相同点:
.只能遍历数组
.都是循环遍历数组中的每一项和调用数组本身
.匿名函数中的this都是指向window
.ie6-8都不支持 不同点:
默认返回对象不同
map返回调用对象本身,forEach默认不返回

forEach

语法array.forEach(function(currentValue, index, arr), thisValue)
这里的 thisValue 是什么鬼,求大神告知
     //按菜鸟教程说
//可选。传递给函数的值一般用 "this" 值。
//如果这个参数为空, "undefined" 会传递给 "this" 值 //按这么说 undefined 会传给this(window)
//测试了 windowd 对象里面也没有
var arr = [,,,,];
arr.forEach(function(currentValue,index,arr){
console.log(currentValue + '---' + index + '---' + arr);
//1---0---1,2,3,4,5
//2---1---1,2,3,4,5
//3---2---1,2,3,4,5
//4---3---1,2,3,4,5
//5---4---1,2,3,4,5
});
console.log(arr); //原数组对象值不变
for(key in window){
key.indexOf('un')>-?console.log(key):false;
}; //传参也不执行
var arr = [,,,,],newArr = [];
arr.forEach(function(currentValue,index,arr){ },function(){alert()}); //不执行

map

语法array.map(function(currentValue,index,arr), thisValue)
这里的 thisValue 是什么鬼,求大神告知
     //这就很奇怪了,怎么效果都是1样的
var arr = [,,,,];
arr.map(function(currentValue,index,arr){
console.log(currentValue + '---' + index + '---' + arr);
//1---0---1,2,3,4,5
//2---1---1,2,3,4,5
//3---2---1,2,3,4,5
//4---3---1,2,3,4,5
//5---4---1,2,3,4,5
});
console.log(arr); //原数组对象值不变

forEach 和 map 的区别

     var arr = [,,,,];
var newArr = arr.forEach(function(currentValue,index,arr){
return currentValue += ;
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //undefined var arr = [,,,,];
var newArr = arr.map(function(currentValue,index,arr){
return currentValue += ;
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //[3, 4, 5, 6, 7] //forEach reurn的方法
var arr = [,,,,],newArr =[];
arr.forEach(function(currentValue,index,arr){
return newArr.push(currentValue += );
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //undefined //map 有的时候还是挺方便的
var arr = [,,];
var newArr = arr.map(Math.sqrt);
console.log(newArr) //[1, 2, 3]

IE 6-8 封装原形上添加

     //forEach

     var arr = [,,,,];
Array.prototype.add_forEach = function add_forEach(val,i){
for(var i=;i<this.length;i++){
val.call(window,this[i],i,this);
}
};
arr.add_forEach(function(val,i,thisArr){
console.log(val + '--' + i + '--' + thisArr)
}); //map
var arr = [,,,,];
Array.prototype.add_map = function add_map(val,i,thisArr){
var newAry = [];
for(var i=;i<this.length;i++){
if(typeof val === 'function') {
val.call(window,this[i],i,this);
newAry[newAry.length] = val;
}
};
return newAry;
};
arr.add_map(function(val,i,thisArr){
console.log(val + '--' + i + '--' + thisArr + this);
})

forEach和map的区别,简单写了IE低版本的原形封装的更多相关文章

  1. 数组遍历方法forEach 和 map 的区别

    数组遍历方法forEach 和 map 的区别:https://www.cnblogs.com/sticktong/p/7602783.html

  2. js中的forEach和map的区别

    我们先来看两者之间的相同之处 var arr = ['a','b','c','d']; arr.forEach(function(item,index,arr){ //item表示数组中的每一项,in ...

  3. 数组中的forEach和map的区别

    大多数情况下,我们都要对数组进行遍历,然后经常用到的两个方法就是forEach和map方法. 先来说说它们的共同点 相同点 都是循环遍历数组中的每一项 forEach和map方法里每次执行匿名函数都支 ...

  4. JS中forEach和map的区别

    共同点: 1.都是循环遍历数组中的每一项. 2.forEach()和map()里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中 ...

  5. forEach和map的区别

    写法上没什么区别,只是返回值会不一样,map能够返回每一项,而forEach则返回undefined,以后要用哪个你知道了吧?map返回新的数组,可以进行后续更多的操作,例如: let arr = [ ...

  6. forEach和map和for方法的区别

    JS中的forEach.$.each.map方法推荐 转载  2016-04-05   投稿:jingxian    我要评论 下面小编就为大家带来一篇JS中的forEach.$.each.map方法 ...

  7. forEach和map的用法和区别

    forEach()和map()都是处理数组的高阶函数有相同的三个值:(currentValue,index,arr): currentValue:必选,当前元素的值,index:可选,当前元素的下标, ...

  8. JS的forEach和map方法的区别,还有一个$.each

    forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each(),长得和f ...

  9. 原生JS forEach()和map()遍历的区别以及兼容写法

    一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...

随机推荐

  1. 走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing

    [摘要] 本文为MoXing系列文章第一篇,主要介绍什么是MoXing,MoXing API的优势以及MoXing程序的基本结构. MoXing的概念 MoXing是华为云深度学习服务提供的网络模型开 ...

  2. 挑战10个最难的Java面试题(附答案)【上】

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动&quo ...

  3. JNI用法小例子

    一.准备包含本地方法的.java文件(ContentVideo.java),包括set()和get()两个方法. public class ContentVideo { public native s ...

  4. 浅议Grpc传输机制和WCF中的回调机制的代码迁移

    浅议Grpc传输机制和WCF中的回调机制的代码迁移 一.引子 如您所知,gRPC是目前比较常见的rpc框架,可以方便的作为服务与服务之间的通信基础设施,为构建微服务体系提供非常强有力的支持. 而基于. ...

  5. 🔥🔥🔥Spring Cloud进阶篇之Eureka原理分析

    前言 之前写了几篇Spring Cloud的小白教程,相信看过的朋友对Spring Cloud中的一些应用有了简单的了解,写小白篇的目的就是为初学者建立一个基本概念,让初学者在学习的道路上建立一定的基 ...

  6. OSC2019关于开源的见闻-开源让世界更美好 社会更文明

    一.开源生态报告-红薯-开源中国创始人 1.协作乏力-大厂同样 2.协议许可证使用不当 新许可证-木兰 3.开发者对法律认识完全不够 著作权意识不够 红线意识不够 相关法律法规的熟悉不够 维权及其弱势 ...

  7. 使用RSA加密方式加密文件

    链接:GITHUB 使用RSA对流进行加密并保存到文件中 缺点:速度非常的慢,加密大文件就等着吧 环境 VS2017 + C# 7.0 + .net framwork 4.7.2

  8. 【JS】394- 简明 JavaScript 函数式编程-入门篇

    转载自公众号"程序员成长指北" 写在开头 本文较长,总共分为三大部分:(对于函数式编程以及其优点有一定理解的童鞋,可以直接从 第二部分 开始阅读) 第一部分:首先会通过实际代码介绍 ...

  9. 【eclipse】Editor does not contain a main type

    问题现象: eclipse运行java程序的时候弹出对话框:Editor does not contain a main type. 解决方法: 右击 src路径 → Build Path → Use ...

  10. 聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer

    事实上,前端很少涉及对二进制数据的处理,但即便如此,我们偶尔总能在角落里看见它们的身影. 今天我们就来聊一聊前端的二进制家族:Blob.ArrayBuffer和Buffer 概述 Blob: 前端的一 ...