ES5 方法总结
slice
/1.slice方法
1) 作用:从一个数组中截取出新的数组
2) 格式:数组名.slice(begin,end);
begin表示开的下标
end表示结束的下标,但是在截取时不包含结束下标对应的元素
3) 注意:
原数组不受影响
如果只设置一个参数,即begin,那么会从begin截取到最后
如果不写参数,那么slice方法可以实现数组的复制 */
let arr = [2,4,434,43] let arr1= arr.slice() arr[0] = 'a' console.log(arr,arr1) // [ 2, 4, 434, 43 ] console.log(arr1 === arr) // false
遍历数组
Array.prototype.clone = function(){ let a=[]; for(let i=0,l=this.length;i<l;i++) { a.push(this[i]); } return a; } let arr = ['aaa','bbb','ccc','wwwww','ddd'] let arr2 = arr.clone() console.log(arr2) console.log( arr2 === arr )
concat()
使用 concat() 用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
Array.prototype.clone=function(){ return [].concat(this); //或者 return this.concat(); } let arr = ['aaa','asss'] let arr1 = arr.clone() arr[0] = 123 console.log(arr,arr1)
ES6 方法总结
Object.assign() 浅复制,也可以实现数组的克隆
let arr = ['sdsd',123,123,123] let arr1 = [] Object.assign(arr1,arr) arr[1] = 'aaaa' console.log(arr,arr1) // [ 'sdsd', 'aaaa', 123, 123 ] [ 'sdsd', 123, 123, 123 ]
扩展运算符
const a1 = [1, 2]; const a2 = [...a1]; a1[0] = 'aaa' console.log(a1,a2)