JS数组遍历方法的深入分析(推荐)

谁用过的朋友强调知道它是非常完美的API可以对数组的遍历调用(套),并_。每()就是其中之一。下面是一个简单的例子:




var arr = { 1, 2, 3,4, 5 };
_。每个(ARR,功能(EL){
console.log(EL);
});


上面的代码将输出1, 2, 3,4, 5,是不是很有意思,遍历数组甚至回路不用自己写,_。每()方法来遍历数组很有用,但其内部的实现并不难,下面来看看如何实现_每()。。在这之前,让我们看看_ API一看。每()。_。每()通常被称为如下:



_。每个(ARR,FN,上下文);

它接收3个参数,



第一个是需要遍历的数组(实际上对象是OK的,然后我们再讨论它)。



第二个是回调函数。这个回调函数可以引入3个参数,如功能(EL,我,ARR),这是当前元素,当前指标与原数组。



第三个是回调函数需要绑定到的上下文,也就是说,指定的回调函数FN的这个值。



嗯,需求是非常清楚的,它会起作用!



让我们先实现一个简单的_。每(),不能修改背景这和接受两个参数,代码如下:




无功_ = {}; / /如果这是低估了哈萨克斯坦
/ /实现的一个简单的_各法。
_。每个=功能(ARR,FN){
对于(var i = 0;i < arr.length;i++){
FN(ARR {我},我,ARR);
}
报酬; / /原始数组返回
}


是什么样的很简单吗只需一个for循环,调用回调函数,只需几行代码就可以了,相信没有朋友可以理解哈!让我们做个测试看看我们是否能正常工作。




var arr = { 1, 2, 3,4, 5 };
_。每个(ARR,功能(EL,我,ARR){
console.log(EL);
});


在浏览器中打开,然后控制台将看到正确的输出。



这个简单的代码并不意味着它,然后再看一个更具挑战性的例子,哈萨克斯坦。例如,数组arr有一笔的属性,我们需要把所有元素的数组,然后将其存储在总结,如下:


var arr = { 1, 2, 3,4, 5 };
arr.sum = 0; / /总和属性用于存储在数组中的元素的总和
_。每个(ARR,功能(EL,我,ARR){
this.sum = EL;
});


此时,此函数用于回调函数。如果它是不受约束的,这是窗口,默认情况下,这不是我们想要的,我们希望它被绑定到数组arr。此功能可通过电话或申请执行,并且代码如下:




无功_ = {}; / /如果这是低估了哈萨克斯坦
绑定,接收两个参数FN和上下文
将绑定绑定到上面的上下文
函数(FN,上下文){
背景背景空| |;
返回功能(EL,我,ARR){
fn.call(背景,El,我,ARR);
}
}
/ / _。每个
_。每个=功能(ARR,FN,上下文){
调用绑定方法,FN绑定到上下文中。
绑定(FN,上下文);
对于(var i = 0;i < arr.length;i++){
FN(ARR {我},我,ARR);
}
报酬;
}
测试用例:
var arr = { 1, 2, 3,4, 5 };
arr.sum = 0; / /总和属性用于存储在数组中的元素的总和
_。每个(ARR,功能(EL,我,ARR){
this.sum = EL;
},ARR);
console.log(arr.sum); / / 15


嗯,这_。每()足够强遍历数组通常,你也可以指定的回调函数中改变这个值。然而,我们上面提到的,强调(_。每个)也可以遍历对象,实现并不难,只要对第一个参数是判断传入的对象或数组的数组,如果只是我们遍历,否则如果对象,使用作为循环通过线…你可以自己试试,或者看看源代码的下划线。



注:由于ES5标准,原生数组已经array.prototype.foreach,array.prototype.map等遍历的方法,可用于项目。

以上是由萧边推荐的js的数组遍历的方法来帮助你的完整描述。如果你有任何问题,请给我留言。萧边会及时回复你。谢谢你的支持网站。