Set()数据类型
Set()是一个无序且唯一的集合。它类似于数组,但是不允许重复的值。可以用来去除数组中的重复项或者检查某个值是否在集合中。
用法:new Set()
let s = new Set();
console.log(s);//Set(0)
常见方法:
add( ) 向集合中添加元素。如果添加成功,返回set本身;否则,返回undefined。
let s = new Set();
s.add(10)
s.add(20)
s.add(30)
console.log(s);//Set(3) {10, 20, 30}
delete( ) 从集合中删除元素。如果删除成功,返回true;否则,返回false
let s = new Set();
s.add(10)
s.add(20)
s.add(30)
console.log(s);//Set(3) {10, 20, 30}
s.delete(20);//
console.log(s);//Set(2) {10, 30}
clear( ) 清空set中所有元素。
let s = new Set();
s.add(10)
s.add(20)
s.add(30)
console.log(s);//Set(3) {10, 20, 30}
s.delete(20);//
console.log(s);//Set(2) {10, 30}
s.clear()//
console.log(s);//Set(0) {size: 0} size是set的自身属性
forEach( ) 遍历集合中的所有元素并执行回调函数。回调函数有三个参数:value(当前元素的值)、key(当前元素的键,也是其值)和set(当前set)。
let s = new Set();
s.add(111).add(222).add(333);
console.log(s.size);//3 返回数组长度
s.forEach((v1, v2) => {
console.log(v1, v2);// 111 111
// 222 222
// 333 333
});
has( ) 判断集合中是否包含某个元素。如果包含,返回true;否则,返回false。
let s1 = new Set();
s1.add(10).add(222).add(333);
console.log(s1.has(999));//false
console.log(s1.has(10));//true
keys( ) values( ) entries( ) 这三个方法分别返回一个迭代器对象,可以用来遍历集合中的所有键、所有值和所有键值对(实体)。
let s = new Set();
s.add(111).add(222).add(333);
console.log(s.size);//3 返回数组长度
s.forEach((v1, v2) => {
console.log(v1, v2);// 111 111
// 222 222
// 333 333
});
console.log(s.keys());// SetIterator {111, 222, 333}
console.log(s.values());// SetIterator {111, 222, 333}
console.log(s.entries());// SetIterator {111 => 111, 222 => 222, 333 => 333}
属性: size
在ES6中,set对象有一个只读属性size
,用于获取set对象中元素的数量。例如:
const mySet = new Set([1, 2, 3, 4, 5]);
console.log(mySet.size); // 输出 5
此外,由于size
是一只读属性,不能直接修改它的值。
Set( )应用
数组去重
// 数组出重
function fn(arr) {
let s = new Set(arr);
console.log(s);//{1 2 3 e 4 f 5 6 }
let s1 = Array.from(s);
console.log(s1);//[1, 2, 3, 'e', 4, 'f', 5, 6]}
fn([1, 2, 3, "e", 2, 4, "f", 1, 4, 5, 6, 3, 4])
set--->数组
// set--->数组
let s = new Set()
s.add(10).add(20).add(30);
console.log(s);//Set(3) {10, 20, 30}
let arr = Array.from(s);
console.log(arr);//(3) [10, 20, 30]
数组--->set
//数组--->set
let arr=[10,234,235,231,34]
console.log(arr);//(5) [10, 234, 235, 231, 34]
let s=new Set(arr);//Set(5) {10, 234, 235, 231, 34}
console.log(s);
arr.forEach(item=>{
s.add(item)
})
console.log(s);//Set(5) {10, 234, 235, 231, 34}