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]
复制代码