复制数组:
javascript中操作对象与java一样采用引用的方式,所以如果通过obj2 = obj1的方式进行数组复制的时候,无论对obj2还是obj1所做的修改都同时影响两个变量的值,从而引发不愿意看到的后果。下面介绍两种实现简单数组元素复制的方法。
(1) 借用slice()进行数组的复制
slice() 函数可从已有的数组中返回选定的元素。使用语法为:
arrObject.slice(start,end); //start,开始位置;end,结束位置
slice()函数将会返回一个新的数组对象,所以使用slice(0)就可以实现数组的复制.
测试代码:
var arr = [1,2,3,4];
var clone = arr.slice(0);
arr.splice(1,2);//删除从位置1开始的两个元素
alert("arr:" + arr + "\nclone:" + clone);//arr:[1,4] clone:[1,2,3,4]
(2) 借用concat()函数进行数组的复制
concat() 用于进行数组的合并。使用语法为:
arrayObject.concat(arrayX,arrayX,......,arrayX)
concat()用于多个数组的合并,但是返回的结果是一个新的数组,而不再引用用于合并的任何一个数组。可以利用它的这个特性来用一个数组连接空数组或直接不传参数完成clone的功能.
测试代码:
var arr = [1,2,3,4];
var clone = arr.concat();
arr.splice(1,2);//删除从位置1开始的两个元素
alert("arr:" + arr + "\nclone:" + 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开始的两个元素
alert("arr:" + arr + "\nclone:" + clone);//arr:[1,2,1,3,4] clone:[1,2,1,3,4]
如果想要实现深层的对象复制,可以采用下面这个通用的实现对象克隆的函数:
来源:http://www.cnblogs.com/birdshome/archive/2005/03/20/122246.html
Object.prototype.clone = function()
{
var objClone;
if ( this.constructor == Object ) objClone = new this.constructor();
else objClone = new this.constructor(this.valueOf());
for ( var key in this )
{
if ( objClone[key] != this[key] )
{
if ( typeof(this[key]) == 'object' )
{
objClone[key] = this[key].Clone();
}
else
{
objClone[key] = this[key];
}
}
}
objClone.toString = this.toString;
objClone.valueOf = this.valueOf;
return objClone;
}
分享到:
相关推荐
这是我在学习通信原理的时候为了做作业方便自己写的一个很简单的计算对数(log)的程序,是用JavaScript实现的。
以e为底的对数.rar以e为底的对数.rar以e为底的对数.rar以e为底的对数.rar以e为底的对数.rar以e为底的对数.rar
分析如何从字符串中选择单个字符、如何将字符码转换为字符串以及如何复制字符串的部分内容·讲述如何对数组执行连接、复制、排序和倒序操作·说明如何使用jQuery、Prototype和MooTools等JavaScript框架快捷高效地...
本文实例讲述了JavaScript对数组进行随机重排的方法。分享给大家供大家参考。具体如下: 这里提供了两个方法对数组进行随机重排。 [removed] var count = 100000,arr = []; for(var i=0;i<count xss=removed>.5 ? -...
主要介绍了javascript使用 concat 方法对数组进行合并的方法,本文介绍的非常详细,具有参考借鉴价值,需要的朋友一起看看吧
在本篇文章里小编给大家整理是一篇关于javascript sort()对数组中的元素进行排序的相关知识点内容,需要的朋友们学习下。
主要介绍了javascript对数组和json数组的操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序。 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨遭遇。 sort 方法用于对数组的元素进行排序。 ...
Javascript技巧-不要用for in语句对数组进行遍历的一些原因分析,需要的朋友可以参考下。
主要介绍了JavaScript中省略元素对数组长度的影响,本文给大家介绍的非常详细具有参考借鉴价值,需要的朋友可以参考下
算法.jsJavaScript 算法库Algorithms.js 是一个 JavaScript 库,它提供了对数组进行排序、搜索、处理矩阵等的方法。用法下载并将其包含在您的 html 中。 < script src =" js/algorithms-min.js " > </ ...
对数运算.rar对数运算.rar对数运算.rar对数运算.rar对数运算.rar对数运算.rar 对数运算.rar对数运算.rar对数运算.rar对数运算.rar对数运算.rar对数运算.rar
最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,决定还是写出来吧,下面这篇文章主要给大家介绍了Javascript对数组对象的各种操作,...
练习-Dev.f Dev.f在Javascript 1.-Factorial 2.-Fibonacci序列3.-对数组进行排序的3个练习
主要介绍了JavaScript对数组操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧