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;
    }

  • 相关阅读:
    .NET 4.5 异步IO
    使用MANIFEST.MF文件来track War包做持续部署
    .NET 4.5 压缩
    自定义实现URL重写 04.18
    对.Net Framework的认识
    那点所谓的分布式——memcache
    不能选择FreeTextBox下拉列表框
    实战架构设计
    LoadRunner压力测试心得总结
    JavaScript的模块化:封装(闭包),继承(原型)
  • 原文地址:https://www.cnblogs.com/peng14/p/3706212.html
Copyright © 2011-2022 走看看