看到一道面试题里面,有 const newBooks = [...this.state.books]
用了展开运算符,顺便来记录一下
展开运算符,将一个数组转为用逗号分隔的参数序列
现在有两个数组[1, 2, 3, 4]和[5, 6, 7],想要将两个函数拼接成一个新的函数。
//es5的写法
let arr1 = [1, 2, 3, 4];
let arr2 = [5, 6, 7];
let arr = arr1.concat(arr2);
console.log(arr)//[ 1, 2, 3, 4, 5, 6, 7 ]
//es6的写法
let arr = [...arr1, ...arr2];
console.log(arr)//[ 1, 2, 3, 4, 5, 6, 7 ]
注:展开运算符是浅拷贝
浅拷贝的值在改变原来对象内容的时候也会影响新的对象值的变化。
常考题目哦
如果要在JavaScript里面实现一个数组的深拷贝,最简单的方法就是
const arr = JSON.parse(JSON.stringify(arr)))