本文目录
- js foreach 有哪些参数
- 原生JS forEach和map遍历的区别以及兼容写法
- js forEach 的使用
- 如何在js里面写foreach
- JS中,forEach的使用问题
- js foreach只能遍历数组吗
- js的foreach遍历怎么用
- each 和 foreach的区别
- JS的forEach和map方法的区别,还有一个$each
js foreach 有哪些参数
语法:
array.forEach(callback(currentValue, index, array){
// 此处省略代码
}, this)
参数:
callback:为数组中每个元素执行的函数
currentValue(当前值):正在处理的当前元素。
index(索引):正在处理的当前元素的索引。
array:forEach()方法正在操作的数组。
返回值:
undefined.
部分资料参考HTML5学堂
原生JS forEach和map遍历的区别以及兼容写法
一、原生JS forEach()和map()遍历
共同点:
1.都是循环遍历数组中的每一项。
2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。
3.匿名函数中的this都是指Window。
4.只能遍历数组。
1.forEach()
没有返回值。
[javascript] view plain copy
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
})
console.log(res);//--》undefined;
console.log(ary);//--》会对原来的数组产生改变;
2.map()
有返回值,可以return 出来。
[javascript] view plain copy
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//--》[120,230,240,420,10];
console.log(ary);//--》[12,23,24,42,1];
兼容写法:
不管是forEach还是map在IE6-8下都不兼容(不兼容的情况下在Array.prototype上没有这两个方法),那么需要我们自己封装一个都兼容的方法,代码如下:
[javascript] view plain copy
/**
* forEach遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myForEach = function myForEach(callback,context){
context = context || window;
if(’forEach’ in Array.prototye) {
this.forEach(callback,context);
return;
}
//IE6-8下自己编写回调函数执行的逻辑
for(var i = 0,len = this.length; i 《 len;i++) {
callback && callback.call(context,this[i],i,this);
}
}
[javascript] view plain copy
/**
* map遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myMap = function myMap(callback,context){
context = context || window;
if(’map’ in Array.prototye) {
return this.map(callback,context);
}
//IE6-8下自己编写回调函数执行的逻辑
var newAry = ;
for(var i = 0,len = this.length; i 《 len;i++) {
if(typeof callback === ’function’) {
var val = callback.call(context,this[i],i,this);
newAry[newAry.length] = val;
}
}
return newAry;
}
-foreach js
js forEach 的使用
$.each(list,function(index,val){
})
其中list就是你的对象数组
index索引
val是每一个对象
如何在js里面写foreach
js没有foreach语句,类似功能的语句是for...of,用法是:
for(var 属性值 of 对象名)。
例如:
《script type=“text/javascript“》
var o=[1,2,3,4];
for(var v of o)
{
document.write(““+v+“《br /》“);
}
《/script》
-foreach
JS中,forEach的使用问题
因为querySelectorAll方法返回的NodeList对象有提供forEach方法,而getElementsByClassName返回的HTMLCollection未提供forEach方法。
js foreach只能遍历数组吗
•高级浏览器支持forEach方法
语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文;
•forEach:用来遍历数组中的每一项;这个方法执行是没有返回值的,对原来数组也没有影响;
•数组中有几项,那么传递进去的匿名回调函数就需要执行几次;
•每一次执行匿名函数的时候,还给其传递了三个参数值:数组中的当前项item,当前项的索引index,原始数组input;
•理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改;但是我们可以自己通过数组的索引来修改原来的数组;
•forEach方法中的this是ary,匿名回调函数中的this默认是window;
?
1
2
3
4
5
6
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
-foreach js
js的foreach遍历怎么用
使用for...in可以遍历js对象的属性,用法如下: for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。 for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
-foreach
each 和 foreach的区别
each和foreach的区别有:
1、foreach是js的原生方法;each是jq的方法;
例如:
var arr = [’mary’,’jack’];
arr.foreach(function(item,index){
console.log(item,index); //mary,0 jack 1
})
2、$.each() 与 $(select).each()之间的区别
2.1、$.each() 可用于遍历任何的集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值,方法会返回被遍历对象的第一参数。
$(select).each() 主要专用于jquery对象的遍历,
$.each()
-foreach js
JS的forEach和map方法的区别,还有一个$each
forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.each(),长得和forEach()有点像,功能也类似。但是从本质上还是有很大的区别的,那么我们探探究竟。
一、forEach和map语法
语法:
//forEach
array.forEach(callback(currentValue, index, array){
//do something
}, this)
//或者
array.forEach(callback(currentValue, index, array){
//do something
})
//map:
var new_array = arr.map(callback[, thisArg])
//$.each()
$(selector).each(function(index,element)) //注意参数的顺序
callback: 为数组中每个元素执行的函数,该函数接收三个参数,
参数一:当前数组中元素;参数二:索引; 参数三:当前数组。
this:可选,执行会掉时候,this的指向。
二、区别
2.1、forEach()返回值是undefined,不可以链式调用。
2.2、map()返回一个新数组,原数组不会改变。
2.3、没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();
2.4、$.each()方法规定为每个匹配元素规定运行的函数,可以返回 false 可用于及早停止循环。
三、经典例子
3.1 在使用forEach()时候,如果数组在迭代的视乎被修改,
则其他元素会被跳过。因为 forEach()不会在迭代之前创建数组的副本。
3.2反转字符串
var str = ’12345’;
Array.prototype.map.call(str, function(x) { //同时利用了call()方法
return x;
}).reverse().join(’’);
3.3一个笔试题。
1
[“1“, “2“, “3“].map(parseInt); //结果 [1, NaN, NaN]
如果想得到[1, 2,3]应该这么做
function returnInt(element){
return parseInt(element,10);
}
[“1“, “2“, “3“].map(returnInt);
这主要是因为 parseInt()默认有两个参数,第二个参数是进制数。当parsrInt没有传入参数的时候,而map()中的回调函数时候,会给它传三个参数,第二个参数就是索引,明显不正确,所以返回NaN了。
3.4....
四、兼容性
forEach()和map()是ECMA5新引入的,可能在标准的其他实现中不存在,在使用前可以要Ployfill一下。
具体网上很多吧,更多的是在ie9以下,如果你的项目无视这些,那么你可以不care。
-foreach