算法-实现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{
//     1、使用this.i,记录当前遍历元素的位置,单独的作用域
     this.i || (this.i=0)
//     2、严谨判断什么时候使用each():
//     当数组长度大于0,且传递的参数必须为函数     
     if(this.length>0 && fn.constructor==Function){
//      遍历数组,底层使用while,for,少用for in      
      
      while(this.i<this.length){
       var e=this[this.i]
//       判断元素是否为数组
       if(e && e.constructor==Array){
//        如果元素为数组,则执行递归操作
        e.each(fn)
       }else{
//        如果元素为非数组,则把元素传递给fn函数,
//        传递参数(当前元素)给fn,并执行函数fn
        fn.call(null,e)
       }
       this.i++
      }
//      函数执行完成后,释放内存,回收变量
      this.i=null
     }
    }catch(ex){
     //TODO handle the exception
    }
    
    return this
   }
   

   console.log(arr.each())
   
  </script>
时间: 2024-10-12 15:03:18

算法-实现each遍历多维数组(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,

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 //我们发现 这个方法只提供给我们遍历一维数组的

遍历二维数组

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 "<

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+

JavaSE7基础 遍历二维数组 for循环

版本参数:jdk-7u72-windows-i586注意事项:博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ //该二维数组有三个不同长度的一维数组. int[][] myArr={ {1,2,3,4}, {4,5,6}, {1,23,45,67,66} }; printArray2(myArr); } public static void printArray2(int[][] myArray)