JS 数组克隆方法总结

  • 2019 年 12 月 5 日
  • 笔记

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)