ES6扩展运算符的使用

主要是因为最近朋友应聘,遇到有问 ES6 扩展运算符的问题,刚开始我对这三个点也是不熟悉,于是查了一些资料,对这个扩展运算符算是有了一定的了解,于是分享给大家

1.扩展运算符的概念

扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。

2.它的一些应用场景

  • 1.ES6 数组去重
//这种方法是不超级简单和暴力
let arr = [1, 3, 3, 3, 2, 4];
var set = new Set(arr);
console.log([...set]); //[1,3,2,4]
  • 2.复制数组,相当于是深拷贝,新的数组的改变不会影响到原数组的改变
let arr = [1, 2, 3];
let newArr = [...arr]; //这一步和es5的newArr.concat()是一样的
newArr.push(4, 5, 6);
console.log(arr); //[1,2,3]
console.log(newArr); //[1,2,3,4,5,6]
  • 3.数组合并
//ES5的代码
let arr = [1, 2, 3];
let arr1 = [4, 5, 6];
const newArr = arr.concat(arr1);
console.log(newArr); //[1,2,3,4,5,6]
//下面ES6的代码的作用和上面的额作用是一样的
const newArr1 = [...arr, ...arr1];
console.log(newArr1); //[1,2,3,4,5,6],是不是这种更简单
  • 4.替代函数的 apply 方法,找出数组中间的最大值
// ES5 的写法
Math.max.apply(null, [14, 3, 77]);
// ES6 的写法
Math.max(...[14, 3, 77]);
// 等同于
Math.max(14, 3, 77);
  • 5.与解构赋值结合使用,可以生成新的数组
// ES5的赋值形式
a = list[0], rest = list.slice(1)
// ES6的赋值,超级方便
[a, ...rest] = list

下面是一些简单的例子

const [first, ...rest] = [1, 2, 3, 4, 5];
first; // 1
rest; // [2, 3, 4, 5]

const [first, ...rest] = [];
first; // undefined
rest; // []

const [first, ...rest] = ["foo"];
first; // "foo"
rest; // []

如果扩展运算符用于数组赋值,只能放在最后一位,否则会报错。

const [...butLast, last] = [1, 2, 3];
// 报错
const [first, ...middle, last] = [1, 2, 3];
// 报错
  • 6.字符串转化数组
let str = "hello world";
console.log([...str]); //["h", "e", "l", "l", "o", "w", "o", "r", "l", "d"]

关于扩展运算符的用法还有很多,我自己感觉还不是很理解,所以没有写,如果感觉这些已经吸收了的话,可以去ES6的官网去看一下阮一峰的ES6书籍,希望写的东西,能对你有所帮助,那对我来说将是很大的鼓励

猜你喜欢

转载自blog.csdn.net/weixin_45356397/article/details/103052555