Javascript中克隆一个数组的实现代码
08年一家公司JS面试题,职位是javascript工程师(赴google)
面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有。
那怎么得到一个新数组呢?
我当时回答:用一个loop将源数组元素依次push到新数组中。这是最简单的方法,但显然不是面试官想要的答案。
最后告知我:利用Array的slice方法。示例如下:
代码如下:
var ary = [1,2,3];//源数组
var ary2 = ary.slice(0);//克隆一个新数组
console.log(ary2);
/* 改变ary2,不会影响到ary,说明的确是两个数组而非引用
* 如果是两个引用,则改变其中任何一个都是对同一个数组操作
*/
ary2[0] = 10;
console.log(ary2);
console.log(ary);
相关推荐
-
js克隆对象、数组的常用方法介绍
Ext的两种克隆的方法: 可以克隆对象.数据等:var newJson = Ext.clone(json); 只能克隆数组:var newJson = Ext.Array.clone(json); JQuery的方法: 深复制[可以迭代]:var newJson = jQuery.extend(true,{}, json); 浅复制[不能迭代]:var newJson = jQuery.extend({}, json); var newJson = $.map(json,function (n)
-
JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
JavaScript中对变量的操作都是通过引用方式,而对数组也一样. 前两天想要对一个数组进行复制,一直苦于找不到办法(遍历的方法俺是绝对不采用的) 无意中拿起<JavaScript权威指南>翻了翻数组的操作函数,发现了slice()函数. slice()原来是用来截取数组中的一部分,这里我用它来复制数组,它的格式如下: array.slice(start, end) 如果省略了end参数,则切分的数组包含从start开始到数组结束的所有元素. 现在要用它来复制数组,就一行,呵呵: var n
-
javascript数组克隆简单实现方法
本文实例讲述了javascript数组克隆简单实现方法.分享给大家供大家参考,具体如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>新建网页 1</title> </head> <body> <script language=javascri
-
JavaScript 克隆数组最简单的方法
var a = [1, 2, 3]; var b = a.slice(0); b[1] = 20; alert(a[1]); //->2 alert(b[1]); //->20 两个值不一样说明克隆成功.当然也可以使用Array的原型来做: Array.prototype.clone = function () { return this.slice(0); } var a = [1, 2, 3]; var b = a.clone(); b[1] = 20; alert(a[1]); //-&
-
js 数组克隆方法 小结
因此如果要创建一个与已经存在的对象内容相同的对象,不能通过简单的赋值操作.这样说的可能还是不太明白. 看下面的例子: 复制代码 代码如下: var a=[1,2,3,4]; var b=a;c=b; a.pop(); //移除最后一个元素 alert(b); //弹出1,2,3 alert(c); //弹出1,2,3 var a=[1,2,3,4]; var b=a;c=b; a.pop(); //移除最后一个元素 alert(b); //弹出1,2,3 alert(c); //弹出1,2,3
-
Javascript中克隆一个数组的实现代码
08年一家公司JS面试题,职位是javascript工程师(赴google) 面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有. 那怎么得到一个新数组呢? 我当时回答:用一个loop将源数组元素依次push到新数组中.这是最简单的方法,但显然不是面试官想要的答案. 最后告知我:利用Array的slice方法.示例如下: 复制代码 代码如下: var ary = [1,2,3];//源数组 var ary2 = ary.slice(0);//克隆
-
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
今天在学习js中的数组时,遇到的输出一个数组中最大.最小值以及它们的下表,以下是自己的解决方法! <script type="text/javascript"> var arr = [14, 14, 53, 14, 14, 53, 67, 67]; var max = arr[0],min = arr[0]; var maxIndex = []; maxIndex[0] = 0; var minIndex = []; minIndex[0] = 0; var j = 1,
-
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
一个小误区 JS中的contains 今天想要用JS判断集合中是否包含另一个集合. 发现,Contains并不能达到所要的效果,查找之后发现了问题 原来,js的contains方法用来查看dom元素的包含关系,并不是Java中数组的contains方法. 先看一下duyunchao同学分享的代码 $(document).ready(function() { var Arrays = ['11','22','33']; var Array ='11'; if(Arrays.indexOf(Arra
-
php获取数组元素中头一个数组元素值的实现方法
本文实例讲述了php获取数组元素中头一个数组元素值的实现方法.分享给大家供大家参考.具体如下: 在php的内置函数中,获取数组元素值的函数主要有 reset next current prev end 这几个函数. reset (PHP 3, PHP 4, PHP 5) 函数定义:mixed reset ( array &array ) 作用:该函数将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值,如果数组为空则返回 FALSE,代码如下: 复制代码 代码如下: $array=
-
JavaScript中常用的数组操作方法
目录 一.concat() 二.join() 三.push() 五.shift() 六.unshift() 七.slice() 八.splice() 九.substring() 和 substr() 十.sort 排序 十一.reverse() 十二.indexOf 与 lastIndexOf 十三.every 对数组 十四.some 十五.filter 十六.map 十七.forEach 数组遍历 1.find(): 2.findIndex(): 3.fill(): 4.copyWithin(
-
JavaScript中常用的数组操作方法总结
目录 前言 数组基础遍历方法 for for of for in 数组的基础操作方法 push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splice:删除添加替换 concat:连接 join:分割 slice:切割 includes:查询 indexOf:查询 fill:填充/替换 es6中带来的数组高阶方法 forEach:迭代(枚举) filter:过滤 map:映射 find:查找 findIndex:查找下标 前言 函数和方法的区别:
-
javascript中删除指定数组中指定的元素的代码
函数如下: 复制代码 代码如下: foreach = function (obj, insp){ if(obj== null && obj.constructor != Array){ return []; } //obj是要处理的数组,obj==null 表示对象尚未存在:obj.constructor != Array 表示对象obj的属性的构造函数不是数组: //constructor属性始终指向创建当前对象的构造函数.两个条件均满足,则返回空数组[]: //下面对construct
-
javascript中判断一个值是否在数组中并没有直接使用
在JS中要判断一个值是否在数组中并没有函数直接使用,如PHP中就有in_array()这个函数.但我们可以写一个类似in_array()函数来判断是一个值否在函数中 例1 复制代码 代码如下: /* * * 判断在数组中是否含有给定的一个变量值 * 参数: * needle:需要查询的值 * haystack:被查询的数组 * 在haystack中查询needle是否存在,如果找到返回true,否则返回false. * 此函数只能对字符和数字有效 * */ function findnum(){
-
JavaScript中的关联数组问题
复制代码 代码如下: var beatles = ["john","Paul","George","Ringo"]; 上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个数字,每增加一个元素,这个数字就依次增加1.第一个元素的下标是0,第二个元素的下标是1.以此类推. 如果在填充数组时只给出了元素的值,这个数组就将是一个传统数组,它的各个元素的下标将被自动创建和刷新. 可以通过在填充数组时为每个新元素明确地给
-
JavaScript中的类数组对象介绍
JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法.而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为"类数组对象".以下是一个简单的类数组对象: 复制代码 代码如下: var o = {0:42,
随机推荐
- ajax 同步请求和异步请求的差异分析
- 使用mysqldump对MySQL的数据进行备份的操作教程
- JScript中正则表达式用法详解
- Java性能调优概述
- javascript模拟枚举的简单实例
- asp.net Request.ServerVariables[] 读解
- Python的“二维”字典 (two-dimension dictionary)定义与实现方法
- Android 自定义View 密码框实例代码
- C# 批处理调用方法
- 基于MySql的扩展功能生成全局ID
- 浅析JS操作DOM的一些常用方法
- asp中格式化HTML函数代码 SDCMS加强版
- Python批量查询域名是否被注册过
- linux expect实现登陆远程主机并执行命令示例代码
- Js可拖拽放大的层拖动特效实现方法
- Android TextView跑马灯效果实现方法
- javaScript实现浮点数转十六进制字符
- C#探秘系列(四)——GetHashCode,ExpandoObject
- 页里面 CDATA的作用说明
- BT5不能使用apt-get命令的解决方案