Array类型的方法

1.push()和pop()方法

push()方法可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。

pop()方法是从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

举个例子:

       var colors = new Array();
       var count = colors.push('red','blue');
       console.log(count)   //2
       count = colors.push('yellow');
       console.log(count)   //3
       
       var item = colors.pop();
       console.log(item);  //yellow
       var colors = ['red','blue'];
       colors.push('brown');
       colors[3] = 'black';
       console.log(colors.length);  //4
       var item = colors.pop();
       console.log(item);    //black

2.unshift()和shitf()方法

shift():它能够移除数组中的第一项并返回该项,同时将数组长度减1

       var colors = new Array();
       var count = colors.push('red','blue');
       console.log(count)   //2
       count = colors.push('yellow');
       console.log(count)   //3
       
       var item = colors.shift();
       console.log(item);  //red
       console.log(colors.length);   //2

 unshift():它能在数组前端添加任意个项并返回新数组的长度

       var colors = new Array();
       var count = colors.unshift('red','green');
       console.log(count);  //2
       count = colors.unshift('black');
       console.log(count)  //3
       console.log(colors)  //["black", "red", "green"]

 3.reverse()和sort()方法

reverse()会翻转数组项的顺序,返回翻转后的数组

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

这个方法的作用相当直观明了,但是不够灵活,因此才有了sort()方法

在默认情况下,sort()方法按照升序排列数组项,为了实现排序,sort()方法会调用每个数组项得toString()转型方法,然后比较得到的字符串,以确定如何排序,即使数组中的每一项都是数值,sort()方法比较的也是字符串

       var values = [0,1,5,10,15];
       values.sort();  //[0, 1, 10, 15, 5]
       console.log(values)

可见,即使粒子中值的顺序没有问题,但sort()方法也会根据测试字符串的结果改变原来的顺序。因为数值5虽然小于10,但在进行字符串比较时,'10'则位于'5'的前面,于是数组的顺序就被修改了,不用说,这种排序方式在什么是时候都不是最佳的方案。因此sort()方法可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值前面

比较函数接受两个参数:
 如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等,则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数

         //    升序
       function compare(value1,value2) {
           if(value1 > value2){
               return 1   //交换顺序
           }else if(value1 < value2){
               return -1  //不交换顺序
           }else{
               return 0
           }
       }
      var value = [0,1,5,10,15];
      value.sort(compare);
      console.log(value)  //[0, 1, 5, 10, 15]

也可以产生降序排序

        function compare(value1,value2) {
            if(value1 > value2){
                return -1   //不交换顺序
            }else if(value1 < value2){
                return 1  //交换顺序
            }else{
                return 0
            }
        }
        var value = [0,1,5,10,15];
        value.sort(compare);
        console.log(value)   //[15, 10, 5, 1, 0]

简化一下:由于比较函数通过返回一个小于零2,等于0,大于零的值来影响排序,因此减法操作就可以通过适当的处理这些情况

升序

         //    升序
        function compare(value1,value2) {
            return value1 - value2
        }
        var value = [0,1,5,10,15];
        value.sort(compare);
        console.log(value)  //[0, 1, 5, 10, 15]

降序

         //    降序
        function compare(value1,value2) {
            return value2 - value1
        }
        var value = [0,1,5,10,15];
        value.sort(compare);
        console.log(value)  //[15, 10, 5, 1, 0]

4.concat()和slice()和splice()方法

concat():concat()方法可以基于当前数组中的所有项创建一个新数组,具体来说,这个方法会先创建当前方法的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新购建的数组,在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回副本,如果传递给concat()方法一个或者多个数组,则该方法回将这些数组中的每一项都添加到结果数组中,如果传递的值不是数组,那么这些值就会简单的添加到结果数组的末尾。

       var colors = ['red','green','blue'];
       var colors2 = colors.concat('yellow',['black','brown']);

       console.log(colors);  //["red", "green", "blue"]
       console.log(colors2);  //["red", "green", "blue", "yellow", "black", "brown"]

slice():它能够基于当前数组的一个或者多个项创建一个新数组,slice()方法可以接受一个或两个参数,即要返回项的起始和结束位置,

          在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项------但不包括结束为位置的项(前闭后开)。注意:slice()方法不会影响原始数组

        var colors = ['red','black','green','white','blue','brown'];
        var colors2 = colors.slice(1);
        var colors3  = colors.slice(1,4);

        console.log(colors);   //["red", "black", "green", "white", "blue", "brown"]
        console.log(colors2);   //['black','green','white','blue','brown']
        console.log(colors3);    //['black','green','white']

注意:如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。例如.在一个包含5项的数组上调用slice(-2,-1)与调用slice(3,4)得到的结果相同。如果结束位置小于起始位置,则返回空数组。

splice():这个方法恐怕是算是最强大的数组方法,他有很多用法,splice()的主要用途是向数组的中部插入项,,但使用这种方法的方式则有如下三种:
  

删除:可以删除任意数量的项,需指定两个参数:要删除的第一项的位置和要删除的项数。例如:splice(0,2)会删除数组中的前两            项。

插入:可以像指定位置插入任意数量的项,需提供三个参数:起始位置,0(要删除的项数),要插入的项,如果要插入多个项,可以          再传入第四,第五·以至任意多个项。例如:splice(2,0,'red','green')会从当前数组位置2开始插入字符串'red','green'。

替换:可以像指定位置插入任意数量的项,且同时删除任意数量的项,需指定3个参数:起始位置,要删除的项数,要插入的任意数量            的项。插入的项数不必与删除的项数相等。例如:splice(2,1,'red','green')会删除当前数组位置2的项,然后再从位置开始          插入字符串'red','green'。

splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组),

        var colors = ['red','green','blue'];
        var removed = colors.splice(0,1);   //删除第一项
        console.log(colors);    //['green','blue']
        console.log(removed);   //['red]   返回的数组中只包含一项


        removed = colors.splice(1,0,'yellow','orange');
        console.log(colors);  //["green", "yellow", "orange", "blue"]
        console.log(removed); //[]


        removed = colors.splice(1,1,'red','purple');
        console.log(colors);  //["green", "red", "purple", "orange", "blue"]
        console.log(removed);  //["yellow"]

总结一下:

push():可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。

unshift():它能在数组前端添加任意个项并返回新数组的长度

pop():是从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

shift():它能够移除数组中的第一项并返回该项,同时将数组长度减1

reverse()和sort():返回值都是经过排序之后的数组

concat():返回新购建的数组

slice():一个参数:slice()方法返回从该参数指定位置开始到当前数组末尾的所有项

            如果有两个参数:返回起始和结束位置之间的项------但不包括结束为位置的项(前闭后开)。

           注意:slice()方法不会影响原始数组

splice():始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)

改变原数组的:

  1. shift:将第一个元素删除并且返回删除元素,空即为undefined
  2. unshift:向数组开头添加元素,并返回新的长度
  3. pop:删除最后一个并返回删除的元素
  4. push:向数组末尾添加元素,并返回新的长度
  5. reverse:颠倒数组顺序
  6. sort:对数组排序
  7. splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回

不改变原数组的:

  1. concat:连接多个数组,返回新的数组
  2. join:将数组中所有元素以参数作为分隔符放入一个字符
  3. slice:slice(start,end),返回选定元素
  4. map,filter,forEach,some,every等不改变原数组

猜你喜欢

转载自blog.csdn.net/weixin_41910848/article/details/81507334
今日推荐