ES6复制数组和合并数组
一、复制数组与合并数组
复制数组:它是复合数据类型,直接复制只是复制了指向底层数据结构的指针,而不是复制一个全新的数组
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数组的扩展</title>
</head>
<body>
</body>
<script type="text/javascript">
/*
1、扩展运算符:扩展运算符(spread)是三个点,类似rest参数的逆运算,将一个数组转换为逗号分隔开的参数序列
*****/
console.log(...[1, 2, 3]);
// 主要用于函数的的调用
function push(arr, ...items) {
// 函数的调用,使用扩展运算符,该运算符将一个数组变为参数序列
arr.push(...items);
}
function add(x, y) {
return x + y;
}
const number = [4, 354];
// 函数的调用,使用扩展运算符,该运算符将一个数组变为参数序列
let a = add(...number);
console.log(a)
/*
2、替代函数的apply方法
*****/
// (1)扩展运算符可以展开数组,所以不需要apply方法将数组转换为函数的参数
// es5:
let arr1 = [0, 1, 2, 3];
let arr2 = [5, 6, 4, 3, 2];
console.log(arr1.push(...arr2))
/*
3、扩展运算符的应用
*****/
// (1)复制数组:复合数据类型,直接复制只是复制了指向底层数据结构的指针,而不是复制一个全新的数组
const a1 = [1, 2, 3];
const a2 = a1;
// a2[0]=20;
// a2并不是a1克隆的,而是指向同一份数据的另一个指针,修改a1时a1也会跟着改变
a1; //20, 2, 3
// 解决方法:es5
const a3 = a1.concat();
// 修改a3的同时不会改变a1
a3[0] = 20;
a1 //[1, 2, 3]
// es6:克隆方法(2种)
const a4 = [...a1];
const [...a5] = a1;
/* (2)合并数组*/
const array1 = [1, 2];
const array2 = ['zhou', 'zhou'];
const array3 = ['z', 'zou'];
// es5
array1.concat(array2)
// es6
console.log([...array1, ...array2,...array3])
</script>
</html>