js 数组

js中的数组类似与java中的容器 类型可以不同、长度可变

一、数组的声明

     var arr1=new Array();//数组的声明一
     var arr2=[1,2,3,true,new Date()];//数组的声明二      

二、数组的操作    

   var arr3=arr2.pop();//移除数组的最后一个元素,返回移除的元素
   var arr4=arr2.push(12,23);//向数组中添加元素,返回新数组的长度
   var arr5=arr2.shift();//移除数组的头部一个元素,返回移除的元素
   var arr6=arr2.unshift(false,"qq");//从头部向数组中添加元素,返回新数组的长度
   var arr7=arr2.splice(1,2);//截取新数组(第一个参数起始位置,第二个参数截取个数,第三个参数:追加新元素的个数)
   var arr8=arr2.slice(2,4);//截取范围 返回截取的内容 操作的不是数组本身

       var arr9=[12,13,3,34];
       var arr10=[14,15];
   var result1=arr9.concat(arr10);//合并两个数组 返回一个新数组
   var result2=arr9.join("-");//在元素之间加入内容 返回一个字符串
   arr9.sort();//排序 正序 把元素当作字符串    操作数组本身
   arr9.reverse();//排序倒序 按照数组的顺序 倒序   操作数组本身

     正常的排序:

window.onload=function(){
        var arr3=[10,3,7,9,34];
        arr3.sort();
        console.info(arr3);//[10, 3, 34, 7, 9]
        arr3.sort(compare);//使用 自定义的函数 compare
        console.info(arr3);//[3, 7, 9, 10, 34]
    }
    function compare(value1,value2){
        if(value1<value2){
            return -1;
        }else if(value1>value2) {
            return 1;
        }else{
            return 0;
        } 
    }

三、 ECMN5新特性

     1、下标的方法
           var aa=[1,2,3,4,5];
     var index1=aa.indexOf(1);  //0       返回元素在数组的位置
           var index2=aa.indexOf(2,4);//3      从第几(2)个位置查某个(4)元素的位置
           var index3=aa.lastIndexOf(2);//从数组尾部查找元素的位置
     2、 迭代数组的方法

window.onload=function(){
        var aa=[1,2,3,4,5];
        //对于数组的每一个元素用一个函数运行,如果都返回true,结果返回true
      var verey=aa.every(function(item,index,array){
        return item>0;
       });
         console.info(verey);//true;

        //对于数组的每一个元素用一个函数运行,返回过滤后的结果
        var filter=aa.filter(function(item,index,array){ 
          return item > 2; 
        }); 
        console.info(filter);//[3,4,5]

        //循环数组的每一个元素(for循环) 
        aa.forEach(function(item,index,array){ 
            alert(item);//打印每个元素
        }); 

        //对于数组的每一个元素用一个函数运行可以经过函数执行后,把新的结果返回
        var map=aa.map(function(item,index,array){ 
            return item*2;  
        }); 
        console.info(map);//[2,4,6,8,10] 

        //对于数组的每一个元素用一个函数运行,如果有一项返回true,结果返回true
        var some=aa.some(function(item,index,array){  
            return item>3; 
        });
        console.info(some);//true;

        //pre 前一个值 cur当前值 index索引位置 array数组(左边开始)
        var reduce=aa.reduce(function(prev,cur,index,array){  
            return prev+cur;  
        }); 
        console.info(reduce);//15 

        //pre 前一个值  cur当前值 index索引位置 array数组(右边开始)
        var reduceRight=aa.reduceRight(function(prev,cur,index,array){
            return prev+cur;    
        });
        console.info(reduceRight);//15 
    }

四、常用方法————————Util

       <!-- ———————移除指定元素 str是要删除的元素 ————————————-->
        Array.prototype.moveElement=function(str){
            if(this.length===0){
                throw new Error("数组空");
            }
            for(var index=0,len=this.length;index<len;index++){
                if(this[index]===str){
                if(isNaN(index)||index>this.length){
                    return false;
                }
                for(var i=0,n=0;i<this.length;i++){
                  if(this[i]!=this[index]){
                    this[n++]=this[i]
                  }
                 }
                this.length-=1;
                return;
                }
            }
        }

 

    window.onload=function(){
        //去除数组中的重复项
       var arr=[1,3,2,2,4,5,6,6,7,8,9];
       alert(uniq(arr));
    }
    //把数组转为对象
    var arrToObj=function(arr){
        var obj={};
        for(var i=0;i<arr.length;i++){
            obj[arr[i]]=i;
        }
        return obj;
    }
    //把对象转为数组
    var objToArr=function(obj){
        var arr=[];
        for(var attr in obj){
            if(obj.hasOwnProperty(attr)){
                arr.push(attr);
            }
        }
        return arr;
    }
    //去掉数组中的重复项
    function uniq(arr){
       return objToArr(arrToObj(arr));
    }

 

 

 

 

posted @ 2015-04-01 21:59  小禾点点  阅读(279)  评论(0编辑  收藏  举报