var arr = [1].concat[2];
//返回值arr就是[1,2]
複製代碼
concat() 方法用於鏈接兩個或多個數組。 該方法不會改變現有的數組, *** 返回值是被鏈接數組的一個副本 ***數組
arrayObject.concat(arrayX,arrayX,......,arrayX)
複製代碼
js原生的concat是在鏈接數組的時候只會鋪平一級數組, 好比:ui
var arr = [1].concat[2];
//返回值arr就是[1,2]
複製代碼
//若是鏈接的數組是大於一維的數組,那麼,從二維開始,按照原樣鏈接
var arr1=[1];
var arr2 = arr1.concat([2,[3],4,[5]]);
console.log(arr1,arr2)
//[1] [1,2,[3],4,[5]]
複製代碼
Array.prototype._concat = function() {
var arr = JSON.parse(JSON.stringify(this)); // 用JSON能夠深度拷貝數組
//var arr=this.slice(0)//用slice能實現淺拷貝this數組
for (var i = 0; i < arguments.length; i++) {
var argo = arguments[i];
for ( var j = 0; j < argo.length; j++ ) {
arr.push(argo[j]);
}
};
return arr;
}
var arr1 = [1,2,3], arr2 = ['a','b','c'];
arr1._concat(arr2) //[1, 2, 3, "a", "b", "c"]
複製代碼
只是不用for循環,換了map而已,代碼更簡潔 此方法增長了參數是非數組的處理this
Array.prototype._concat = function(){
var arr = JSON.parse(JSON.stringify(this));
var args = [...arguments];
args.map(item=>{
if(Array.isArray(item)){
item.map(val=>{
arr.push(val)
})
}else{
arr.push(item)
}
});
return arr;
}
var arr1 = [1,2,3]
var arr2= [4,5,6]
arr1._concat(arr2)
//[1, 2, 3, 4, 5, 6]
arr1._concat(0); // [1,2,3,0]
複製代碼