forEach和map的区别,简单写了IE低版本的原形封装
今天有点'不务正业',旧的没有写完又开新的,没办法 -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低版本的原形封装的更多相关文章
- 数组遍历方法forEach 和 map 的区别
数组遍历方法forEach 和 map 的区别:https://www.cnblogs.com/sticktong/p/7602783.html
- js中的forEach和map的区别
我们先来看两者之间的相同之处 var arr = ['a','b','c','d']; arr.forEach(function(item,index,arr){ //item表示数组中的每一项,in ...
- 数组中的forEach和map的区别
大多数情况下,我们都要对数组进行遍历,然后经常用到的两个方法就是forEach和map方法. 先来说说它们的共同点 相同点 都是循环遍历数组中的每一项 forEach和map方法里每次执行匿名函数都支 ...
- JS中forEach和map的区别
共同点: 1.都是循环遍历数组中的每一项. 2.forEach()和map()里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中 ...
- forEach和map的区别
写法上没什么区别,只是返回值会不一样,map能够返回每一项,而forEach则返回undefined,以后要用哪个你知道了吧?map返回新的数组,可以进行后续更多的操作,例如: let arr = [ ...
- forEach和map和for方法的区别
JS中的forEach.$.each.map方法推荐 转载 2016-04-05 投稿:jingxian 我要评论 下面小编就为大家带来一篇JS中的forEach.$.each.map方法 ...
- forEach和map的用法和区别
forEach()和map()都是处理数组的高阶函数有相同的三个值:(currentValue,index,arr): currentValue:必选,当前元素的值,index:可选,当前元素的下标, ...
- JS的forEach和map方法的区别,还有一个$.each
forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each(),长得和f ...
- 原生JS forEach()和map()遍历的区别以及兼容写法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
随机推荐
- 转:IK分词原理
IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件.从3.0版本开始,IK发展为面向java的公用分 ...
- doget,dopst,service方法的区别
先看servlet: package com.szxy.test; import java.io.IOException; import javax.servlet.ServletException; ...
- 2018HDU多校二 -F 题 Naive Operations(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6315 In a galaxy far, far away, there are two integer ...
- GlusterFS缺陷
glusterfs缺陷 转自:http://www.liuwq.com/2017/04/20/glusterfs%E8%AF%A6%E8%A7%A3/ glusterfs 原理.优势.使用范围等 Gl ...
- Day 06 流程控制和爬虫基础2
目录 if 判断 单分支结构 双分支结构 多分支结构 for循环 for循环的基本用法 for循环嵌套 break continue 爬虫基础2 爬取豆瓣TOP250 爬取豆瓣数据接口(异步数据) 爬 ...
- 递归的实际业务场景之MySQL 递归查询
喜欢就点个赞呗! 源码<--请点击此处查看 引入 当我看到一些评论时,例如下面的样子.我挺好奇这个功能是怎么样做出来的.进过查阅资料,发现这其实是 MySQL 的递归操作.下面就让我操作一下怎么 ...
- GitHub 上的 12306 抢票神器,助力回家过年
又到周末了,不过本周末有些略微的特殊. 距离每年一次的全球最大规模的人类大迁徙活动已经只剩下一个多月了,各位在外工作一年的小伙伴大多数人又要和小编一样摩拳擦掌的对待史上最难抢的抢票活动. 然鹅,身为一 ...
- 《Java基础知识》Java集合(Collection)
作为一个Developer,Java集合类是我们在工作中运用最多的.最频繁的类.相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求: Java集合就像一个容器,可以存储任何类型的数 ...
- 《Dotnet9》系列-开源C# Winform控件库强力推荐
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...