jquery foreach和each的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery foreach和each的区别相关的知识,希望对你有一定的参考价值。

jquert没有foreach
foreach是原生js的方法,针对数组,[].foreach(value,index,arr)
each是jq的方法,针对jq对象,$().each(index,value)
注意两者第一二个参数是位置颠倒的
参考技术A jquery里没有foreach的函数 参考技术B foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容,能够应用的编程语言类别:Java、C# 、php、D语言(Phobos库)。

each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象、数组的属性值并进行处理。jQuery和jQuery对象都实 现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话 说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素逐一进行方法调用。而jQuery对象提供的each方法则是对jQuery内 部的子元素进行逐个调用。本回答被提问者和网友采纳

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

一、前言

  forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.each(),长得和forEach()有点像,功能也类似。但是从本质上还是有很大的区别的,那么我们探探究竟。

二、forEach和map语法

2.1、语法:

//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.2、区别

  2.2.1、forEach()返回值是undefined,不可以链式调用。

  2.2.2、map()返回一个新数组,原数组不会改变。

  2.2.3、没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();

  2.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", "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。

 

 

以上是关于jquery foreach和each的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

你知道forEach和each的区别吗?

js的forEach,jquery的each,for

原生js使用forEach()与jquery使用each遍历数组,return false 的区别

`_.forEach` 和 `$.each` 之间的区别 [关闭]

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