有没有一种方法克隆jQuery中的数组?
这是我的代码:
var a=[1,2,3] b=$.clone(a) alert(b)
不jQuery有一个“克隆”方法? 我怎样才能克隆一个数组使用jQuery?
那jQuery.merge呢?
copy = $.merge([], a);
更改
b = $。克隆(a)到b = $(this).clone(a),但它有一段时间不工作
但有报道
http://www.fusioncube.net/index.php/jquery-clone-bug-in-internet-explorer
解决scheme您使用JavaScript的简单的内置克隆function
var a=[1,2,3]; b=clone(a); alert(b); function clone(obj){ if(obj == null || typeof(obj) != 'object') return obj; var temp = obj.constructor(); for(var key in obj) temp[key] = clone(obj[key]); return temp; }
-ConroyP
一个很好的select是
// Shallow copy var b = jQuery.extend({}, a); // Deep copy var b = jQuery.extend(true, {}, a);
– 约翰Resig
检查类似的post
- 什么是在JavaScript中深入克隆对象的最有效方法?
我是这样做的:
var newArray = JSON.parse(JSON.stringify(orgArray));
这将创build一个与第一个不相关的新的深层副本(不是浅拷贝)。
这也显然不会克隆事件和函数,但好东西你可以在一行中做到这一点,它可以用于任何对象的国王(数组,string,数字,对象…)
另一种select是使用Array.concat:
var a=[1,2,3] var b=[].concat(a);
尝试
if (!Array.prototype.clone) { Array.prototype.clone = function () { var arr1 = new Array(); for (var property in this) { arr1[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property] } return arr1; } }
用于
var a = [1, 2, 3] b = a; a.push(4) alert(b); // alerts [1,2,3,4] //---------------/// var a = [1, 2, 3] b = a.clone(); a.push(4) alert(b); // alerts [1,2,3]
var a=[1,2,3] b=JSON.parse(JSON.stringify(a)); document.getElementById("demo").innerHTML = b;
<p id="demo"></p>