zoukankan      html  css  js  c++  java
  • js对数组进行浅复制,深复制的方法

    js 数组常用方法,数组的拷贝(不影响原数组),数组相等

    改变原数组的方法:

    1. pop();删除尾部的第一个元素并且返回这个元素;
    var a = [1,2,3];
    var b = a.pop();
    console.log(a);//[1,2]
    console.log(b);//3
    • 1
    • 2
    • 3
    • 4
    1. 类似方法: 
      push();尾部推入;返回数组长度; 
      shift();顶部弹出;返回该元素; 
      unshift();顶部亚入;返回数组长度;
    2. reverse();反转数组;返回反转后的数组;
    3. splice();常用方法;返回被删除的数组成的数组,可以为[];

    不改变原数组的方法:

    1. concat:返回拼接后的数组,不改变原数组;
    2. forEach;
    3. map;
    4. join();返回拼接后的字符串,可以指定间隔;
    //attention:
    [1,2,3].join('')
    //"123"
    [1,2,3].join()
    //"1,2,3"
    • 1
    • 2
    • 3
    • 4
    • 5
    1. slice(start,end);截取数组,返回截取的部分,不改变原始数组;
    2. sort();排序;传入一个函数作为参数,可以控制为升序,降序或者随机;(try用来产生随机数);
    3. toString();[1,2,3].toString()==[1,2,3].join();

    数组拷贝

    数组属于引用类型;简单的赋值只是添加了一个指向数组的指针;ex:

    var a = [1,2,3];
    var b = a;
    b.push(2);
    console.log(a)//[1,2,3,2]
    • 1
    • 2
    • 3
    • 4

    那么如何实现独立的拷贝?介绍下面两种方法:两种方法性能上相差不大,不同浏览器内核上各有千秋:

    //方法1
    var a = [1,2,3];
    var b = a.slice();
    a.reverse;
    console.log(a);//[3,2,1]
    console.log(b);//[1,2,3]
    //方法2
    var c = [4,5,6];
    var d = c.concat();
    c.reverse();
    console.log(c);//[6,5,4]
    console.log(d);//[4,5,6]
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    数组相等

    先说下坑吧: 
    任意两个数组相等都会返回false;[]=[];//false 
    怎么办?千万不要逐项去比较,看看上面可用的方法:toString(); 
    转化为字符串一次就比较完了。

  • 相关阅读:
    get post 小结
    ddt 实例
    通俗大白话来理解TCP协议的三次握手和四次断开
    find xss
    use . adb . get wifi
    http bass
    mac 配置homebrew
    id 与 void * 转换
    Maven
    percent-encode 百分号编码
  • 原文地址:https://www.cnblogs.com/chenhuichao/p/9099348.html
Copyright © 2011-2022 走看看