关于javascript:如何复制或复制数组数组

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的评论