es6常用特性———Set

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

set的属性:

size;返回set实例的成员总数。

let set = new Set();
    set.add(10).add(20).add(30);
console.log(set.size); //3

set的方法:

① add(value):添加某个值,返回set结构本身。

     let set = new Set();
         set.add(10).add(20).add(30).add(30);
        console.log(set)//{10, 20, 30}

② delete(value):删除某个值,返回一个布尔值,表示是否删除成功。

let set = new Set();
      set.add(10).add(20).add(30)
 console.log(set.delete(10)); //true

③ has(value):返回一个布尔值,表示该值是否为Set的成员。

  let set = new Set();
    set.add(10).add(20).add(30)
 console.log(set.has(10));  //true

④ clear():清除所有成员没有返回值。

let set = new Set();
    set.add(10).add(20).add(30)
    set.clear();
console.log(set); //{}

set构造函数支持参数,参数可以为数组。

   let set = new Set([10,20,30]);
  console.log(set)//{10, 20, 30}

数组去重:

Array.form方法可以将Set结构转为数组
Array.from() 方法从一个类似数组或可迭代的对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等) 中创建一个新的数组实例.

      let uniqArr = arr => Array.from(new Set(arr));
       let a = uniqArr([10, 20, 30, 10, 20, 30]);
    console.log(a);// [10, 20, 30]

set的遍历

keys方法,values方法,entries方法返回的都是遍历器对象。
由于Set结构没有键名只有键值(或者说键名和键值是同一个值),所以keys()和values()是方法的行为完全一致。

1.遍历键keys( )

let os = new Set([1, 2, 3, 4, 5]);
let ks = os.keys();
for (let i of ks) {
    console.log(i);
}
// 1
// 2
// 3
// 4
// 5

2.遍历值values( )

  let os = new Set([1, 2, 3]);
    let ks = os.values();
    for (let i of ks) {
        console.log(i);
    }
     // 1
     // 2
     // 3

3.遍历实体entries( )
下面代码中,entries方法返回的遍历器,同时包括键名和键值,所以每次输出的两个成员完全相等。

let os = new Set([1, 2, 3]);
for (let [key, value] of os.entries()) {
    console.log(key,value);
}
 // 1 1
 // 2 2 
 // 3 3

4.forEach( )
关于箭头函数,详见es6常用特性——箭头函数

let os = new Set([1, 2, 3]);
os.forEach(item => void console.log(item));
// 1
// 2
// 3

5.for…of
set因为部署了iterator接口,所以可以被for…of遍历。

let os = new Set([1, 2, 3]);
for (let i of os) {
    console.log(i)
}
// 1
// 2
// 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值