js陣列克隆方法 總結
阿新 • • 發佈:2019-02-08
方法一: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]);
}
執行結果: