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

  • 相关阅读:
    Codeforces 235C Cyclical Quest 后缀自动机
    HDU-6583 Typewriter 后缀自动机+dp
    HDU-4436 str2int 后缀自动机
    [题解]诸侯安置(dp+组合)
    [题解]洛谷P1350车的放置
    二进制表示中1的个数与异或关系
    [洛谷P1593][POJ-1845Sumdiv] 因子和
    [USACO08DEC]拍头Patting Heads 题解
    [小白逛公园]|[SP1716]|[UVA1400]解题报告(三合一)
    P2034选择数字题解
  • 原文地址:https://www.cnblogs.com/peng14/p/3706212.html
Copyright © 2011-2022 走看看