JavaScript利用数组原型,添加方法实现遍历多维数组每一个元素

原型就是提供给我们为了让我们扩展更多功能的。

今天学习了用js模拟底层代码,实现数组多维的遍历。思想是在数组原型上添加一个方法。

 1 //  js中的数组forEach方法,传入回掉函数 能够帮助我们遍历数组
 2 var arr =[1,2,3,4,[1,2,[1,4]]];
 3 arr.forEach(
 4     function(item , index , arr){
 5         alert(item);    //1 2 3 4 1214
 6     }
 7 );
 8 //我们发现 这个方法只提供给我们遍历一维数组的功能
 9
10 //我们想自己实现一个能遍历多维数组的方法 那么就在原型里面添加方法
11 // 原型的一个作用就是留给我们扩展对象的属性和方法的
12 //我们为数组添加一个each方法能遍历多维数组 传入一个回掉函数
13 Array.prototype.each = function( fn ){
14     try{  //核心业务逻辑
15         this.i||(this.i = 0); //定义一个计数器,如果存在就是原来 如果不存在初始化成0
16         //当数组有长度并且传过来的是一个函数的时候我们就对数组执行回调
17         if(this.length>0 && fn.constructor == Function){
18             while(this.i < this.length){    //进行遍历
19                 var e = this[this.i]; //取到当前元素
20                 //如果取到的e元素是个数组,那就递归 一直到是一个元素的时候再执行回调
21                 if(e && e.constructor == Array){
22                     e.each(fn);
23                 }else{
24                     //进入这里说明 e元素是单个元素
25                     //我们为e元素绑定方法,相当于e调用了fn方法
26                     //fn.apply(e,[e]); 或者
27                     fn.call(e,e);
28                 }
29                 this.i++;
30             }
31         }
32         this.i = null;    //进行垃圾回收 删除引用标记
33     }catch(ex){
34         //do something
35     }
36 };
37
38 //调用我们自己的方法
39 arr.each(
40     function(item){
41         alert(item);
42     }
43 );    //1 2 3 4 1 2 1 4  这里实现了遍历多维数组
时间: 2024-10-19 16:59:45

JavaScript利用数组原型,添加方法实现遍历多维数组每一个元素的相关文章

javascript增加Array的each方法 循环遍历多维数组

由于ECMA提供遍历数组的方法forEach()只能遍历一维数组,没有提供循环遍历多维数组的方法,所以我们自己来实现一个each()方法,来遍历多维数组. <script charset=utf-8 type=text/javascript> /*var arr = [1,2,3,[4,[5]]]; arr.forEach(function(item,index,arr){ alert(item); }); */ //模拟ECMA forEach  循环遍历多维数组 var arr = [1,

遍历二维数组

package zuoye; public class zuoye0110 { public static void main(String[] args) { // TODO 自动生成的方法存根 //遍历二维数组 int[][]a={{12,23,45,78,43},{97,435,78,9,45,423},{45,7,4,32}}; int sum =0; for(int b=0;b<a.length;b++){ for(int c=0;c<a[b].length-1;c++){ sum+

Undefined offset原因以及解决办法-php利用for遍历二维数组方法-二维数组怎么遍历

<?php $arr3 = [ [1,2,3], [4,5,6,7], [8,9,10,11,12], ]; $len = count($arr3); $num2 = 0; $zong = 0; for($i = 0; $i < $len; $i++) { $tem = $arr3[$i]; $len2 = count($tem); for($j = 0; $j < $len2; $j++) { $num2 += $tem[$j]; $zong++; } } echo "<

javascript 利用 - 枚举思想 - 添加地名的一个小例子

利用枚举思想来添加地名,主要功能是:判断点击a标签(即当前的地名)如果在ul的li不存在的话那么就添加,有则不添加,而且还提供了相应的排序功能... HTML代码: <div id="china"> <a href="javascript:;">广州</a> <a href="javascript:;">深圳</a> <a href="javascript:;"

算法-实现each遍历多维数组(javascript)

# 实现each遍历多维数组   <script type="text/javascript">     //   var arr=[1,2,3,4,[1,2,3,4]] //   arr.forEach(function(item,index,array)){}    var arr=[12,3,2,3,4,[3,2,4,1],[3,3,1,32,12,4,4,52]]        Array.prototype.each=function(fn){     try{

08.18 javascript 06 数组 数组的概念 创建数组 读取数组中的元素 稀疏数组 添加和删除数组的元素 数组遍历 多维数组 数组的方法 类数组对象 作为数组的字符串

# 数组 ### 数组的概念 * 数组是值的有序集合 * 数组中的每个值 称之为 元素 * 每个元素可以是任意数据类型的值 * 每个元素都有索引(下标) * 元素的索引从0开始,按照顺序递增. 元素最大的索引 2^32-2 ### 创建数组 * 直接量 `[]` * 构造函方式  `new Array()` ### 读写数组中的元素 * 数组名[索引] ### 稀疏数组 * js数组的索引是连续的 * 没有连续的给元素赋值 , 没有赋值的元素会自动赋值 undefined ### 添加和删除 数

JS 数组(遍历 二维数组)

<script> // var arr =Array(); // arr[0] = 'aaa'; // arr[1] = 'bbb'; // arr[6] = 333; // arr.push('11111'); // arr.forEach(function(v,k){ // alert(v); // }); //第一种遍历 //var arr=Array(); //arr[0]=1; //arr[1]=2; //arr[2]=3; //arr[4]='aaaa'; 2与4之间会显示一个un

php中foreach循环遍历二维数组

最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题 (因为不知道该怎么设置where条件,设置只显示Jdate字段中今天以后的数据,所以只能在select查询后的数据中进行筛选..基础没大佬,真的挺麻烦) 进入正题 官方文档中给了foreach的两种用法 foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用

C++入门经典-例6.11-使用指针变量遍历二维数组

1:代码如下: // 6.11.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p; p=a[0]; for(int i=0;i<sizeof(a)/sizeof(int);i+