1.set class
set是值的集合,set是无序的,且不能重复。一个值可以是或不是集合的成员。
let s=new Set();//空集
let t=new Set([1,s]);//有两个元素的集合。
let t=new Set(s);//新集合,元素来自于s
let unique=new Set("Mississippi");//M i s p四个元素
unique.size//4
Set不用在使用前初始化,你可以利用add(),delete(),clear()方法操作他。
(1)add方法,add方法接收一个参数,如果你传递一个数组,它会把数组本身加入Set中,add()会返回调用的集合,如果需要添加多个元素,可使用
s.add('a').add('b').add('c');
(2)delete方法一次只能删除一个元素。delete()返回一个boolean值,删除成功返回true,其他情况返回false.
(3)set使用===判断元素是否相等。所以使用delete删除对象时会无法成功删除,因为他们指向不同的引用。
实践中最常见的操作是判断一个值是否属于集合,而不是添加或移除。使用has()方法。
let oneDigitPrimes=new Set([2,3,5,7])
oneDigitPrimes.has(2);//true
oneDigitPrimes.has(3);//true
oneDigitPrimes.has(4);//false
oneDigitPrimes.has("5");//false "5"是字符串。
Set的has方法比Array的includes方法要快速许多。
Set是可迭代的,可以使用for/of循环
let sum=0;
for(let p of oneDigitPrimes){sum+=p;
}
Set可迭代,可以使用...操作符
[...oneDigitPrimes]//=>[2,3,5,7]
Math.max(...oneDigitPrimes)//=》7
Set可使用foreach
let product=1;
oneDigitPrimes.forEach(n=>{product*=n;});
product//210