ES6中对Set解析
Posted linxim
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6中对Set解析相关的知识,希望对你有一定的参考价值。
1.set基础
(1)set类似数组 只有值value 没有键key
(2)有iterable接口:数组,arguments,元素集合,SET,MAP,字符串
(3)会默认去重
function fn(){ console.log(new Set(arguments)) } fn(1,2,3,4);
答案:
add 增加 返回值增加后的set实例(可以实现链式写法)
参数一次加一个
let set1=new Set([1,2,"哈哈",null,NaN,true]);
console.log(set1.add(10).add(100));
答案:
delete 删除 返回值是 true/false 如果里面有这一项就删除成功,没有此项就删除失败。
let set1=new Set([1,2,"哈哈",null,NaN,true]);
console.log(set1.add(10).add(100));
console.log(set1.delete(1));
clear 清空 没有返回值 undefined,没有参数
let set1=new Set([1,2,"哈哈",null,NaN,true]);
console.log(set1.clear());
console.log(set1);
has 判断有没有此项 返回值true/false
let set2=new Set([1,2,"哈哈",null,NaN,true]);
console.log(set2.has(NaN));
forEach()遍历
currentValue 必需。当前元素
index 可选。当前元素的索引值。
arr 可选,当前元素所属的数组对象
set2.forEach((item,index,input)=>{
console.log(item,index,input);
//Set 实例只有value没有key
//item,index:当前项 //input:当前实例
})
for(let [item,val] of set2.entries()){
//item,val 全是value值
console.log(item,val);
}
2.代码练习
let arr1=[1,3,5,7,8,9]; let arr2=[2,4,6,7,8,9]; //并集 function add(arr1,arr2){ return [...new Set([...arr1,...arr2])] }
[1, 3, 5, 7, 8, 9, 2, 4, 6]
let arr1=[1,3,5,7,8,9]; let arr2=[2,4,6,7,8,9]; //交集 function same(arr1,arr2){ return arr1.filter(item=>arr2.includes(item)) } console.log(same(arr1,arr2));
[7, 8, 9]
let arr1=[1,3,5,7,8,9]; let arr2=[2,4,6,7,8,9]; //差集 (并集-交集) //includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回true,否则false function diff(arr1,arr2){ return add(arr1,arr2).filter(item=> !same(arr1,arr2).includes(item)) } console.log(diff(arr1,arr2));
[1, 3, 5, 2, 4, 6]
以上是关于ES6中对Set解析的主要内容,如果未能解决你的问题,请参考以下文章