zoukankan      html  css  js  c++  java
  • javascript数组总结(0504)

    一:数组复制

    //方法一
    //slice()函数将会返回一个新的数组对象
    var arr = [1,2,3,4];
    var clone = arr.slice(0);
    arr.splice(1,2);//删除从位置1开始的两个元素
    console.log("arr:" + arr + " clone:" + clone);//arr:[1,4] clone:[1,2,3,4]

    //方法二:
    //concat()用于多个数组的合并,但是返回的结果是一个新的数组,而不再引用用于合并的任何一个数组。可以利用它的这个特性来用一个数组连接空数组或直接不传参数完成clone的功能。
    var arr = [1,2,3,4];
    var clone = arr.concat();
    arr.splice(1,2);//删除从位置1开始的两个元素
    console.log("arr:" + arr + " clone:" + clone);//arr:[1,4] clone:[1,2,3,4]

    //以上两种数组复制的操作都不适合对数组中包括复杂数据类型的数据,如果数组中包括复杂数据类型的数据,对这些数据的修改仍然会同时影响复制数组与被复制数组。所以它并不是一个彻底的能实现深层复制的处理思路。
    var arr = [1,2,[1,2,3],4];
    var clone = arr.slice(0);
    arr[2].splice(1,1);//删除从位置1开始的两个元素
    console.log("arr:" + arr + " clone:" + clone);//arr:[1,2,1,3,4] clone:[1,2,1,3,4]

    //对象深层复制
    Object.prototype.clone = function(){
    var objClone;
    if(this.constructor == Object){
    objClone = new this.construtor();
    }else{
    objClone = new this.constructor(this.valueOf());
    }
    for(var key in this){
    if(objClone[key]!=this[key]){
    if(typeof(objClone[key] == "Object")){
    objClone[key]=this[key].clone();
    }else{
    objClone[key] = this[key];
    }
    }
    }
    objClone.toString = this.toString;
    objClone.valueOf = this.valueOf;
    return objClone;
    }

  • 相关阅读:
    《JFlow: Practical Mostly-Static Information Flow Control》
    《嵌入式Linux C编程》第一章笔记
    Ansible --- 通过Ansible管理地区机房中的内网机器
    等保审核 --- MySQL密码复杂度
    等保审核 --- MySQL连接控制插件
    等保审核 --- MySQL操作审计记录
    CSS中居中的完全指南(中英对照翻译)
    svn提交报database is locked
    PHP session_cache_expire 会话函数
    MySQL CONCAT_WS 函数
  • 原文地址:https://www.cnblogs.com/peng14/p/3706212.html
Copyright © 2011-2022 走看看