方法一:for(){}
最笨low的方法
Array.prototype.clone = function(){
var a = [];
for(var i=0;i<this.length;i++){
a.push(this[i]);
}
return a;
};
//使用调用
var arr = [1,true,{},"a"];
var arr2 = arr.clone();
方法二:Array对象的slice()方法
slice()方法是通过参数start和end的传入值来返回数组中的一段(截取数组),且该方法不对原数组进行操作。
我们可以通过slice(0)来截取整个原数组,从而得到一个新数组。
Array.prototype.clone = function(){
return this.slice(0);
};
//使用调用
var arr = [1,true,{},"a"];
var arr2 = arr.clone();
方法三:Array对象的concat()方法
concat()是用来实现数组的合并。
我们可以通过和一个空数组的合并,来实现克隆功能。
Array.prototype.clone = function(){
return [].concat(this);
//或者return this.concat([]);
//或者return this.concat();
};
//使用调用
var arr = [1,true,{},"a"];
var arr2 = arr.clone();
遍历结果注意:
如果要遍历以上数组的话,用for(){} 和 for-in遍历后的结果是不同的。
这也说明了为什么for-in对遍历数组并不友好;遍历数组用for-of更好。
(1)用for(){} 遍历arr或arr2
for(var i=0;i<arr.length;i++){
console.log("第" + i + "次遍历:" + arr[i]);
}
运行结果:
(2)用for-in 遍历arr或arr2
for(key in arr2){
console.log("第" + key + "次遍历:" +arr2[key]);
}
运行结果: