How to copy or duplicate an array of arrays
我正在尝试创建一个重复数组数组的函数。我尝试了blah.slice(0);但它只复制引用。我需要复制一份原稿。
我在http://my.opera.com/greyyvern/blog/show.dml/1725165找到了这个原型方法。
1 2 3 4 5 6 7 8 9 | Object.prototype.clone = function() { var newObj = (this instanceof Array) ? [] : {}; for (i in this) { if (i == 'clone') continue; if (this[i] && typeof this[i] =="object") { newObj[i] = this[i].clone(); } else newObj[i] = this[i] } return newObj; }; |
它可以工作,但会弄乱我正在使用的jquery插件-所以我需要把它转换成一个函数…递归不是我的强项。
感谢您的帮助!
干杯,
1 2 3 4 5 6 7 8 9 10 11 12 | function clone (existingArray) { var newObj = (existingArray instanceof Array) ? [] : {}; for (i in existingArray) { if (i == 'clone') continue; if (existingArray[i] && typeof existingArray[i] =="object") { newObj[i] = clone(existingArray[i]); } else { newObj[i] = existingArray[i] } } return newObj; } |
例如:
1 2 3 4 5 6 7 8 9 | clone = function(obj) { if (!obj || typeof obj !="object") return obj; var isAry = Object.prototype.toString.call(obj).toLowerCase() == '[object array]'; var o = isAry ? [] : {}; for (var p in obj) o[p] = clone(obj[p]); return o; } |
改进的PER的评论