JS数组方法

466 阅读2分钟

栈方法:后进先出(Last-In-First-Out )

1.push(x) :数组尾部添加,返回数组长度

2.pop():数组尾部移出,返回移除的项

var arr = new Array();
    console.log(arr.push('a', 'b'));//2
    console.log(arr);//[a,b]
    console.log(arr.pop());//b
    console.log(arr);//[a]

队列方法:先进先出(First-In-First-Out)

1.shift():移除数组第一个元素,返回移除元素

2.unshift(x):添加元素到数组第一项,返回长度

 //模拟队列
    var arr = new Array();
    arr.push(1,2,3);
    arr.shift();//[2,3]
    console.log(arr);
   //相反方向模拟队列
    var arr1 = new Array();
    console.log(arr1.unshift(1, 2, 3));//3
    arr1.unshift(4);
    console.log(arr1);//[4,1,2,3]
    arr1.pop();
    console.log(arr1);[4,1,2]

重排序方法

1.reverse() 数组反转

    var arr = [1,2,3];
    arr.reverse();
    console.log(arr);//[3,2,1]

2.sort():会把每个数组项用toString方法转成字符串,所以比较的是字符串。

  • 该方法可接收一个比较函数作为参数。arr.sort(compare)
  • 而比较函数可接收两个参数,若第一个参数要在第二个参数之前,应该返回负数。两个参数相等,返回0.第一个参数要在第二个参数之后,返回正数
    console.log(arr1.sort());//[0,1,2,3,4]
    var arr2 = [1,10,5,42];
    console.log(arr2.sort());//[1,10,42,5]
    
    
     var arr2 = [1,10,5,42];
    //console.log(arr2.sort());//[1,10,42,5]
    function compare(value1,value2) {
        if(value1 < value2){ 
            return -1;//第一个参数在第二个参数之前
        }else if (value1 > value2){
            return 1;
        }else{
            return 0;
        }
    }
    arr2.sort(compare);
    console.log(arr2);//[1,5,10,42]

操作方法

concat():两个或多个数组连接,不会改变原来的数组

    var arr = [1,2,3];
    var arr1 = [4,5,6];
    //console.log(arr.concat());//[1,2,3]创建当前数组的副本
    //console.log(arr.concat(arr1));//[1,2,3,4,5,6]//接收参数添加到复制的数组的末尾
    //console.log(arr);//[1,2,3]
    console.log(arr1);//[4,5,6]

splice():会改变原来数组

  • 第一个参数:索引
  • 第二个参数:删除元素的个数
  • 第三个参数:替换或插入的内容
删除:splice(索引,删除个数)
    var arr = [1,2,3];
    arr.splice(0,1);
    console.log(arr);//[2,3]会改变数组
    arr.splice(0,1);
    console.log(arr);//[3]
插入:splice(索引,0,插入元素)
    var arr = [1,2,3];
    arr.splice(2,0,'a','b');
    console.log(arr);//[1,2,3,'a','b']
替换:先删除再插入splice(索引,删除个数,从该索引添加元素)
    var arr = [1,2,3];
    arr.splice(2,1,'a','b');
    console.log(arr);//[1,2,'a','b']

slice():创建一个新的数组并返回。(不会改变原来的数组)接收一个或两个参数

  • slice(begin):从该索引开始,从该位置到数组末尾的所有项
  • slice(begin,end)从begin索引开始到end位置(不包含)的所有项。若第一个参数比第二个参数大,返回空数组
    var arr = [1,2,3];
    console.log(arr.slice(-1));//[1,2,3]
    console.log(arr.slice(0));//[1,2,3]
    console.log(arr.slice(1));//[2,3]
    console.log(arr.slice(2));//[3]
    console.log(arr.slice(1, 2));//[2]