js数组操作(增删改,排序,深浅拷贝)


    1. unshift()    //在数组头部插入一个元素

    eg:

 let arr1 = [1,2,3,4,5];
      arr1.unshift(0);
      console.log(arr1);//[0,1,2,3,4,5]
    2. shift()    //移除并返回数组的第一个元素
    eg:    
 let arr1 = [1,2,3,4,5];
      arr1.shift();
      console.log(arr1);// =>[2,3,4,5]
    3. push()    //在数组尾部插入一个元素
    eg:   
  let arr1 = [1,2,3,4,5];
      arr1.push(6);
      console.log(arr1);// =>[1,2,3,4,5,6]
    4. pop()    //移除并返回数组的最后一个元素
    eg:     
 let arr1 = [1,2,3,4,5];
      arr1.pop();
      console.log(arr1);// =>[1,2,3,4]
    5. concat()    //合并两个数组或衔接元素到数组,不会改变原数组,返回新的数组
    eg:    
  let arr1 = [1,2,3,4,5];
      let arr2 = [6,7,8,9];
      let concatArr = arr1.concat(arr2);
      console.log(arr1);// =>[1,2,3,4,5]
      console.log(arr2);// =>[6,7,8,9]
      console.log(concatArr);// =>[1, 2, 3, 4, 5, 6, 7, 8, 9]
    6. every()    //依次遍历数组,判断每个元素是否为true  有一个为false就为false
    eg:
   array.every(function(value,index.self){})
      //value遍历的元素,index元素的索引,self数组本身
      let arr1 = [1,2,3,4,5];
      let arr2 = arr1.every(function(value,index,self){
      return value>0
      })
      console.log(arr2);// =>true
    7. filter()    //依次遍历数组,返回包含符合条件的新数组,可以当作数组过滤器使用
    eg:
array.filter(function(value,index.self){})
      let arr1 = [1,2,3,4,5];
      let arr2 = arr1.filter((value,index,self)=>{
        return value>3
      })
      console.log(arr2);// =>[4,5]
    8. map(value,index,self)    //依次遍历并计算每个元素,返回计算好的元素的数组
    此方法和filter很相似,他们区别是filter返回筛选后的新数组,map返回显示计算结果的数组

     //和filter同样的算法,会得出以下结果

    eg:

let arr1 = [1,2,3,4,5];
    let arr2 = arr1.map((value,index,self)=>{
    return value>3
    });
    console.log(arr2);// =>[false, false, false, true, true]
    他的通常用法类似下面这种:   
   let arr1 = [1,2,3,4,5];
      let arr2 = arr1.map((value,index,self)=>{
      return value*2
      });
      console.log(arr2);// =>[2,4,6,8,10]
   9. forEach(value,index,self)    //依次遍历元素,执行指定的函数,无返回值
    eg:
 let arr1 = [1,2,3,4,5];
    arr1.forEach((value,index,self)=>{
      console.log(value+1);// =>依次输出2,3,4,5,6并不是一个数组
    });
   10.  indexOf(value,start)    //在数组中查找匹配元素,存在返回元素从左往右第一次出现的位置,不存在返回-1
    eg:
 let arr1 = [1,2,3,4,5,3,4,5];
     console.log(arr1.indexOf(3));// =>2
    11. lastIndexOf(value,start)    //在数组中反向查找匹配元素,存在返回元素所在的位置,不存在返回-1
    即从右往左查找数组,第一次出现的位置即为返回值,但返回值的大小依然是从左往右数的
    eg: 
 let arr1 = [1,2,3,4,5,3,4,5];
     console.log(arr1.indexOf(3));// =>2
    12. join(sparator )    //将数组中所有的元素按照分隔符拼接成一个字符串
    eg: 
   let arr1 = [1,2,3,4,5];
    console.log(arr1.join());// =>1,2,3,4,5
    console.log(arr1.join('##'));// =>1##2##3##4##5
   13.  reserve()    //反转数组中的顺序
    eg:
  let arr1 = [1,2,3,4,5];
    console.log(arr1.reverse());// =>[5,4,3,2,1]
    14. slice(startIndex,endIndex)     //返回数组的一部分,切割部分数组 -1代表最后一个元素
    截取的元素不包含此处结尾序号的元素,即包含开始序号,但不包含结尾序号的元素,
    返回一个新的数组,包含从startIndex到endIndex前一个元素的所有元素
    eg:
  let arr1 = [1,2,3,4,5];
    console.log(arr1.slice(0,2));// =>[1,2]
    console.log(arr1.slice(0,4));// =>[1,2,3,4]
   15. splice(startIndex,deleteCount,value)     //删除替换元素,改变原数组
    startIndex为开始删除插入或替换的起始元素序号,deletecount删除的元素个数,替换的元素值
    eg:
 let arr1 = [1,2,3,4,5];
    /* console.log(arr1.splice(0));// =>[1,2,3,4,5]表示从元素1开始全部删除,返回包含删除元素的新数组
    console.log(arr1);// =>[]改变原数组,原数组为空
    */

    /* console.log(arr1.splice(0,0));// =>[]表示从元素1开始删除0个元素,即没有删除元素,新数组为空
    console.log(arr1.splice(0,0,0));// =>[]同上
    console.log(arr1);// =>[1,2,3,4,5]//原数组没有被删除任何元素*/

    console.log(arr1.splice(2,0,2.5));// =>[1,2,3,4,5]由于没有删除元素所有新数组为空
    console.log(arr1);// =>[1, 2, 2.5, 3, 4, 5]//原数组增加了一个元素
    16. toString()     //将数组中所有元素通过一个英文逗号','拼接为一个字符串
    eg:
 let arr1 = [1,2,3,4,5];
    console.log(arr1.toString());// =>1,2,3,4,5
    17. sort(opt_orderFunc)     //按一定的规则进行排序
    参数:opt_orderFunc(v1,v2) {Function}:可选的排序规则函数。若省略,将按照元素的字母进行从小到大排序。
     v1 :遍历时前面的元素。v2 :遍历时后面的元素。
    排序规则:
    比较v1和v2,返回一个数字来表示v1和v2的排序规则:
    小于0 :v1小于v2,v1排在v2的前面。
    等于0 :v1等于v2,v1排在v2的前面。

    大于0 :v1大于v2,v1排在v2的后面。

    eg:   
 let arr1 = [1,4,11,6,14,2,5,3];
    console.log(arr1.sort())// => [1, 11, 14, 2, 3, 4, 5, 6]按照字符来排
    let arr2 = arr1.sort(function(v1,v2){
    return v1-v2
    })
    console.log(arr2) // => [1, 2, 3, 4, 5, 6, 11, 14]从小到大排序
    18. 浅拷贝:Array类型是一种引用类型;当数组a复制给数组b时,对数组b进行元素修改,数组a也会发生修改。
    eg:    
  let arr1 = [1,2,3,4,5];
      let arr2 = arr1;
      arr2[2] = 6;
      console.log(arr2)// =>[1, 2, 6, 4, 5]
      console.log(arr1)// =>[1, 2, 6, 4, 5]
   19. 深拷贝:使用concat()方法,返回新的数组;防止浅度复制的情况发生,对数组b进行元素修改操作,数组a不发生变更。
    eg:     
 let arr1 = [1,2,3,4,5];
      let arr2 = arr1.concat();
      arr2[2] = 6;
      console.log(arr2)// =>[1, 2, 6, 4, 5]
      console.log(arr1)// =>[1, 2, 3, 4, 5]
    20. 判断2个数组是否相等
    说明:Array数组为引用类型,所以哪怕 []===[] 都会返回false,所以可通过数组toString()方法返回的字符串判断是否相等。
      eg:  
 let arr1 = [1,2,3,4,5];
    let arr2 = [1,2,3,4,5];
    console.log(arr1===arr2)// =>false
    console.log(arr1.toString()===arr2.toString())// =>true

猜你喜欢

转载自blog.csdn.net/qq_15385627/article/details/80568127