ES笔记(二)

165 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

本文作为本人学习总结之用,以笔记为主,同时分享给大家.
因为个人技术有限,如果有发现错误或存在疑问之处,欢迎指出或指点!不胜感谢!

[...] 扩展运算符

扩展运算符(spread)也是三个点(...)。将一个数组转为用逗号分隔的参数序列,对数组进行解包。

//1. 数组的合并
const arr1 = ['张三','李四'];
const arr2 = ['王五','赵六'];
const arr3 = [...arr1, ...arr2];
console.log(arr3);  // '张三','李四','王五','赵六'

//2. 数组的克隆
const arr4 = ['E','G','M'];
const arr5 = [...arr4];
console.log(arr5);//  ['E','G','M']

//3. 将伪数组转为真正的数组
const divs = document.querySelectorAll('div'); //在之前放几个div
const divArr = [...divs];
console.log(divArr); 

rest 参数

rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

 // ES5 获取实参的方式
 function date(){
     console.log(arguments);
 }
 date('白芷','阿娇','思慧');

 //rest 参数
 function date(...args){
     console.log(args);// filter some every map 
 }
 date('阿娇','柏芝','思慧');

// rest 参数必须要放到参数最后
 function fn(a,b,...args){
     console.log(a); //1
     console.log(b); //2
     console.log(args); //Array(4) 3,4,5,6
 }
 fn(1,2,3,4,5,6);

Set

它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成 Set 数据结构。

Set 结构的实例有以下属性。

  • Set.prototype.constructor:构造函数,默认就是Set函数。
  • Set.prototype.size:返回Set实例的成员总数。

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。
//声明一个 set
let s = new Set();
let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);

//元素个数
// console.log(s2.size);
//添加新的元素
// s2.add('喜事儿');
//删除元素
// s2.delete('坏事儿');
//检测
// console.log(s2.has('糟心事'));
//清空
// s2.clear();
// console.log(s2);

for(let v of s2){
    console.log(v);
}

Set实践

set 一直用于数组去重

let arr = [1,2,3,4,5,4,3,2,1];
//1. 数组去重
let result = [...new Set(arr)];
console.log(result); //1, 2, 3, 4, 5
//2. 交集
let arr2 = [4,5,6,5,6];
// let result = [...new Set(arr)].filter(item => {
//     let s2 = new Set(arr2);// 4 5 6
//     if(s2.has(item)){
//         return true;
//     }else{
//         return false;
//     }
// });
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result); //[4, 5]

//3. 并集
let union = [...new Set([...arr, ...arr2])];
console.log(union); //1, 2, 3, 4, 5, 6

//4. 差集
let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(diff); //1, 2, 3