复制数组:
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;
}
分享到:
相关推荐
JavaScript_基于排序描述符对数组进行排序的_Demo_BlobSortDemo
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和动态效果。...记住,理解和掌握自然对数以及如何在JavaScript中实现它,对于进行复杂的数据处理和科学计算至关重要。
这是我在学习通信原理的时候为了做作业方便自己写的一个很简单的计算对数(log)的程序,是用JavaScript实现的。
本文将详细解析JavaScript对数组的各种操作,包括添加、删除、截取、排序和倒序等。 首先,我们来看如何声明创建一个数组对象。在JavaScript中,有两种常见的创建数组的方式: 1. 使用`new Array()`构造函数: ```...
以上就是JavaScript对数组进行随机重排的两种主要方法。了解这些方法可以帮助开发者在需要时快速实现数组的随机排序功能,无论是在前端界面开发还是后端数据处理中。掌握这些技巧对于提升JavaScript编程能力具有实际...
在JavaScript编程中,对数运算是一项基础且重要的数学操作,尤其在处理图形、科学计算以及数据分析等场景中不可或缺。对数运算与指数运算互为逆运算,它可以帮助我们解决复杂问题,例如简化计算、理解数据的增长模式...
分析如何从字符串中选择单个字符、如何将字符码转换为字符串以及如何复制字符串的部分内容·讲述如何对数组执行连接、复制、排序和倒序操作·说明如何使用jQuery、Prototype和MooTools等JavaScript框架快捷高效地...
JavaScript是一种广泛应用于Web开发的动态编程语言,它提供了强大的数据处理能力,其中包括对数组和JSON数组的操作。在这篇文章中,我们将深入探讨如何在JavaScript中有效地操作这两种类型的数据结构。 **一、...
JavaScript中的`sort()`方法是数组的一个非常重要的成员,它用于对数组中的元素进行排序。本文将深入探讨`sort()`的工作原理、默认行为以及如何自定义排序规则。 首先,`sort()`方法的基本用法是直接调用数组对象的...
为了方便地对数组进行操作,JavaScript提供了多种数组方法,其中`concat`方法是用于合并两个或多个数组的内置方法。通过`concat`方法,开发者可以将一个数组中的所有元素添加到另一个数组中,并返回一个新的数组。这...
JavaScript的内置对象如Array、String、Date等提供了大量实用的方法,例如Array的`reduce()`用于对数组进行累积计算,String的`trim()`用于去除空白字符。 以上只是JavaScript核心概念的一部分,实际上JavaScript...
这些实例可能展示了如何使用函数作为参数,或者将函数作为返回值,以及如何利用这些工具对数组进行操作。 此外,JavaScript中的事件处理和DOM操作也常常是实例的重点。例如,如何添加事件监听器、触发事件,以及...
`Array.prototype.map()` 可以对数组中的每个元素执行一个函数,并返回新的数组。`Array.prototype.concat()` 用于合并两个或更多数组。 ```javascript let source1 = [/*...*/]; let source2 = [/*...*/]; let ...
下面将对 JavaScript 中常用的字符串和数组方法进行总结。 字符串方法 1. `charAt()`: 返回在指定位置的字符。 2. `charCodeAt()`: 返回在指定的位置的字符的 Unicode 编码。 3. `concat()`: 连接字符串。 4. `...
在JavaScript编程语言中,对数运算是一项基础且重要的数学运算功能,尤其在处理指数增长、复利计算和各种科学计算时显得十分有用。JavaScript提供了Math对象来执行数学运算,其中包括计算自然对数的方法。自然对数的...
这些元素可以通过`<input>`、`<button>`等HTML标签定义,并通过类名或ID来标识以便于JavaScript进行操作。 接着,我们需要编写JavaScript代码来处理用户的点击事件。每个按钮都有对应的点击事件监听器,当用户点击...