数组方法总结

时间:2022-09-08 19:04:27

数组:存储一组或者一系列相关数据的容器;

  动态赋值方法: 增、删、改、截、拼、复、排、转         1.作用 2.返回值 3.是否会影响原数组    

增:
  unshift("新增的元素")
    1.在数组的首部增加元素
    2.返回新增后数组的长度
    3.是
    用法
      var arr = [3,4,5,6,7];
      console.log(arr.unshift(8));
      console.log(arr);

      var arr = [3,4,5,6,7];
      console.log(arr.unshift([1,2,3]));
      console.log(arr); //[[1,2,3],3,4,5,6,7]

  push("新增的元素")
    1.在数组的尾部增加元素
    2.返回新增后数组的长度
    3.是

    用法:

      var arr = [3,4,5,6,7];

      console.log(arr.push([1,2,3])); 

      console.log(arr); //[[1,2,3],3,4,5,6,7]

删:
  shift()
    1.删除数组首部的元素(一次只能删除一个元素) 思考:如何删除数组所有元素?
    2.返回被删除的元素
    3.是

    用法:
      var arr = [3,4,5,6,7];
      console.log(arr.shift());
      console.log(arr);

  pop()
    1.删除数组尾部的元素(一次只能删除一个元素)
    2.返回被删除的元素
    3.是
改:
  splice(下标位置,删除的长度,增加元素,……)
    1.在数组指定的位置,删除、新增、修改。
    2.返回是被删除的元素列表
    3.是
    用法:在下标为2后面添加3这个数字
        var arr=[10,3,32,43,434,87];
        arr.splice(2,0,3);
        console.log(arr);
        结果:10,3,32,3,43,434,87
      删除下标为2替换为3这个数字
        arr.splice(2,1,3);
        结果:10,3,3,43,434,87
      删除index2开始的后3个,并添加3
        arr.splice(2,3,3);
        表示:删数组的第2个数字开始的后三个数字,并且用3去替换;(从0开始计算)
        结果:(3) [10,3,87]

截:
  slice[start,end) : 前包后不包
    1.截取指定范围的元素
    2.返回被截取到的元素列表
    3.否
  用法:
    var arr = [3,4,5,6,7];
    console.log(arr.slice(1,3)); //[4,5]
    console.log(arr)

    var arr = [3,4,5,6,7];
    console.log(arr.slice(1,-2)); //[4,5]
    console.log(arr);

    var arr = [3,4,5,6,7];
    console.log(arr.slice(-4,-2)); //[4,5]
    console.log(arr);

    var arr = [3,4,5,6,7];
    console.log(arr.slice(4,2)); //空数组
    console.log(arr);
    substring:参数不可以是负数


    var arr=[10,5,40,25,1000,1];
    console.log(arr.slice(2));
    结果:40,25,1000,1 //取得是下标数字为2以及之后的数字


    var arr=[10,5,40,25,1000,1];
    console.log(arr.slice(2,4));、、提取[2-4)之间的字符,不包前后
    结果:40,25 //取得是2,3的值

拼 :
  concat("拼接的内容") 注:如果拼接的内容是一个数组,则将该数组所有的元素提取出来再拼接
    1.在指定的数组末尾拼接新的元素
    2.返回拼接后的新数组
    3.否

    用法:
      var a=[2,4,5];
      var b=[34,55];
      var c=["beijing"];
      console.log(a.concat(b)); //(5) [2, 4, 5, 34, 55]
      console.log(a.concat(c)); //(6) [2, 4, 5,"beijing"]
      console.log(a); //[2,4,5]

复 :面试题,至少写出三种复制数组的方法?
  1.slice(0)
  2.arr.concat()
  3.var arr = [3,4,5,6,7];
    var list = [];
    for(var i = 0;i < arr.length;i ++){
      list[i] = arr[i];
    }
    arr[0] = 9;
    console.log(arr);
    console.log(list);


转:

  join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。转为字符串
    1.将数组转为指定连接符的字符串。
    2.返回转换后的字符串。
    3.否

    用法:
      var arr = [3,5,4,6,7,100];
      console.log(arr.join(""));//常用 35467100
      console.log(arr); //[3,5,4,6,7,100];
      var a=[2,4,5];
      console.log(a.join())
      //结果:2,4,5;
      console.log(a.join("."))
      //结果:2.4.5
  toString()
    转换后字符串
    否
    1.转化为字符串
      var arr=[2,5,3,1,5];
      console.log(arr.toString()); // 25315 字符串
      console.log(arr) //[2,5,3,1,5]; 不改变
    2.十进制转为n进制
      var a=123;
      console.log(a.toString(2))

排:

  reserve()
    1.将数组元素逆序存放
    2.返回逆序后的数组
    3.是

    用法:
      var arr=[2,4,5];
      console.log(arr.reverse()); //[5,4,2]
      console.log(arr) //[5,4,2]
  sort()    sort(function(a,b){return a-b;})

    1.排序

    2.返回排序后的数组

    3.是
    //函数作为参数出现,称为回调函数,a-b从小到大;b-a从大到小
    字符串时按照字母顺序进行排序,不是字符串时要构造函数

    用法:
      var arr=[10,5,40,25,1000,1];
      console.log(arr.sort(function(a,b){return a-b;}))
      console.log(arr) //改变原数组
      结果:(6) [1, 5, 10, 25, 40, 1000];
          (6) [1, 5, 10, 25, 40, 1000]

  拓展:
    查找数组中最小值
    var minArray=Math.min.apply(null,Array);

   ES5新增的数组方法

  indexOf(元素,下标位置):查找,并返回第一个值出现的下标。若没有,返回-1
      value表示要查找的数字,start表示从当前数组的第几个值开始查找,并返回value首次出现的下标
    例1:var arr=[1,2,3,8,2,6,7]
      console.log(arr.indexOf(2,1))
      结果:1
      分析:要查找2这个数字,所以value为2;从数组的0位数开始查询,数组中第一个出现的2下标为1,所以打印结果为1
    例2:var str="Hello world!"
      console.log(str.indexOf(world))
      打印结果:6

  map:有返回值,参数是匿名函数
    var arr=[10,2,3,5,2]
    var list = arr.map(function(value,index){
      retrun value+1; //11,3,4,6,3
    })
    console.log(list)
  forEach:遍历数组;
    参数:匿名函数;
    数组有多少项,就调用多少次函数
    返回值:undefined

    用法:
      var arr=[10,2,3,5,2]
      arr.forEach(function(value,index,arr){//回调函数 value表示元素值,index表示元素下标
        console.log(value+":"+index+":"+arr);
      })
      结果:  10 : 0 :[10,2,3,5,2]
          2 : 1 : [10,2,3,5,2]
          3 : 2 : [10,2,3,5,2]
          5 : 3 : [10,2,3,5,2]
          2 : 4 : [10,2,3,5,2]
  filter:过滤器,筛选

    用法:
      var arr=[1,2,3,4,5,6,7];
      var newArray=arr.filter(function(value,index,arr){
        return value > 5;
      })
      console.log(newArray)
      结果:[6,7]

  reduce 求数组元素和

    用法:
      var arr=[1,2,3,4,5,6,7];
      var sum=arr.reduce(function(pre,next,index,array){
        return pre + next;
      })
      console.log(sum)//28

   
  有任何错误和不足的地方,还望各位指正。