**扩展运算符是三个点(…),**将一个数组转为用逗号分隔的参数序列
console.log(...[1,2,3]); // 1 2 3
//注意 扩展运算符所在的括号不是函数调用时,是会报错的。 直接写(...[1,2,3])报错
1.主要用于函数的调用
function add(a,b){
return a+b
}
var nums = [3,4];
add(...nums); // 7
var nums = [7,3,2]
var nums2 = [3,5]
//从一组的数据中找到最大值,传的值不能是数组
Math.max()
//在之前的方法中
Math.max.apply(null,nums); // 7
//在使用了扩展运算之后
Math.max(...nums) // 7
//将一个数组添加到一个数组的尾部,但是push方法的参数不能是数组
Array.push()
//在之前的方法
Array.prototype.push.apply(nums, nums2); // 5(数组长度)
nums // [7, 3, 2, 3, 5]
//在使用了扩展运算后
nums.push(...nums2) // 5(数组长度)
nums // [7, 3, 2, 3, 5]
var a1 = [1,2];
//两种写法 改变a2,a1不会变的
var a2 = [...a1];
var [...a2] = a1;
var a1 = [1,2,3];
var a2 = [4,5,6];
var a3 = [7,8,9];
//之前的concat()方法
a1.concat(a2,a3); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
//扩展运算
[...a1,...a2,...a3]; //[1, 2, 3, 4, 5, 6, 7, 8, 9]
const [first, ...rest] = ["foo"];
first // "foo"
rest // []
//如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
const [...butLast, last] = [1, 2, 3, 4, 5]; //报错
var array = [1,1,2,3,4,5,6,6,6];
function qc(arr){ //去重
return [...new Set(arr)] //扩展运算符 复制成数组
}
qc(array) //[1, 2, 3, 4, 5, 6]