小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
本文作为本人学习总结之用,以笔记为主,同时分享给大家.
因为个人技术有限,如果有发现错误或存在疑问之处,欢迎指出或指点!不胜感谢!
[...] 扩展运算符
扩展运算符(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