javascript数组的遍历

277 阅读2分钟
  • 所谓的遍历数组就是将数组中的元素全部取出来
  •  一般使用for循环遍历数组,js中还提供了一个方法遍历数组

for循环遍历数组

 var arr=["孙悟空","猪八戒","沙和尚"];    
    //所谓的遍历数组就是说将数组织中的元素全部取出来  
      for(var i=0;i<arr.length;i++){            
            console.log(arr[i]); 
       } 

forEach( );

  • forEach( )方法需要一个函数作为参数;

  • 像这种函数由我们创建但不由我们调用的函数叫回调函数

  • 数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,可以定义形参来读取这些内容

  • 浏览器会在回调函数时,传递三个参数

  • 第一个参数就是当前正在遍历的元素

  • 第二个参数就是当前正在遍历的元素索引

  • 第三个参数就是当前正在遍历的数组

    //创建一个数组
    var arr=["孙悟空","猪八戒","唐僧","沙和尚"];
    arr.forEach(function(a,b,c){
    console.log("a="+a); //当前遍历的元素
    console.log("b="+b); //当前正在遍历元素的索引
    console.log("c="+c); //当前正在遍历的数组
    console.log(typeof c);

    })

slice( )

  • 可以用来从数组中提取指定元素
  • 该方法不会改变原数组,而是将截取到的元素封装到一个新数组
  • 参数:
  1. 截取开始位置的索引,包含开始索引
  2. 截取结束位置的索引,不包含结束索引
  • 第二个参数可以省略不写,此时会截取从开始索引往后

  • 的所有元素

  • 索引可以是负值,如果传递一个负值,则从后往前计算- 1 倒数第一个

    var arr=["孙悟空","猪八戒","唐僧","沙和尚"];
    var result=arr.slice(0,2); //(开始索引,结束索引) 提取数组中的指定元素
    var result=arr.slice(1); //一个参数,从开始索引以后的所有元素
    console.log(result);

splice( )

  • 可以用于删除数组中的指定元素
  • 使用splice( )会影响到原数组,会将指定元素原数组中删除,并将被删除的元素作为返回值返回
  • 参数:
  1. 第一个参数表示开始位置的索引

  2. 第二个参数表示删除的数量

  3.  第三个及以后可以传递一些新元素,这些元素会插入在开始位置的索引前面

    arr.splice(0,2,"牛魔王","铁扇公主","红孩儿"); //删除数组中指定元素,并添加新元素
    console.log(arr);

splice( )数组去重

  var arr=[1,2,2,3,2,1,3,4,2,5];        
//去除数组中重复的数字        
//获取数组中的每一个元素        
for(var i=0; i<arr.length; i++){           
// console.log(arr[i]);            
/* 获取当前元素后的所有元素 */            
for(var j=i+1; j<arr.length; j++){               
// console.log("------->"+arr[j]);               
//判断两个元素的值是否相等               
if(arr[i]==arr[j]){                   
//如果相等,则证明处出现了重复的元素,则删除j对应的元素                   
arr.splice(j,1);                   
//当删除了当前j所在的元素以后,后边的元素会自动补位                   
//此时将不会再比较这个元素,需要在比较一次j所在位置的元素                   
//使j自减                   
j--;               
        }            
    }       
}

concat( )

  • concata( )可以连接两个或多个数组,中间用逗号隔开并将新的数组返回

  • 该方法不会对原数组产生影响

    var arr=["孙悟空","猪八戒","沙和尚"];
    var arr2=["白骨精","玉兔精","蜘蛛精"];
    var result=arr.concat(arr2);
    //concat()可以连接两个或多个数组,中间用逗号隔开
    //console.log("result="+result);

Join( )

  • 该方法可以将数组转换成字符串

  • 该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回

  • 在join( )中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符

    var result=arr.join("--");
    //join()将数组转换成字符串,可以指定一个字符串作为数组中元素的连接符
    console.log("result="+result); //不指定连接符,则默认使用逗号连接
    console.log(typeof result);

reverse( )

  • 该方法用来反转数组(前边的去后边,后边的去前边)
  • 该方法会直接修改原数组
  •   var result=arr.reverse();
    

Sort( )

  • 该方法会对数组中的元素进行排序

  • 也会影响原数组,默认会按照Unicode编码进行排序

  • 即使是纯数字的数组,也会按照Unicode编码进行排序

  • 可以自己指定排序的规则,可以在sort()添加一个回调函数,来指定排序规则

  • 回调函数中需要定义两个形参;

  • 浏览器会分别使用数组中的元素作为实参去调用回调函数

  • 浏览器会根据回调函数的返回值来决定元素的顺序

  • 如果返回一个大于0的值,则会交换位置

  • 如果返回一个小于0的值,则元素位置不变

  • 如果返回0,则认为两个元素相等,也不交换位置

    var arr=["b","d","e","a","c"]
    var result=arr.sort(); //该方法会对数组中的元素进行排序
    console.log("result="+result);

    var arr=[1,5,3,4,9,2,8];
    arr.sort(function(a,b){
    return a-b; //升序排序 b-a降序排序
    });
    console.log(arr);