es6之Set(2)
脑阔痛Ծ‸Ծ,我终于又开始学es6啦~
es6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
什么是set?大致长这样
var s = new Set(["a","b","c"]);
console.log(s);
Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。
1.add(value)
:添加某个值,返回Set结构本身
var s = new Set(["a","b","c"]);
s.add(1);
console.log(s);
//结果:Set(5) {"a", "b", "c", 1}
一、set方法中只会保存唯一
var s = new Set(["a","b","c"]);
s.add(1).add(2).add(1);
console.log(s);
//结果:Set(5) {"a", "b", "c", 1, 2}
二、NaN也不会例外,即使NaN===NaN是false
var s = new Set(["a","b","c"]);
s.add(NaN).add(NaN);
console.log(s);
//结果:Set(4) {"a", "b", "c", NaN}
2.delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功
var s = new Set(["a","b","c"]);
s.delete('b')
console.log(s);
//结果:Set(2) {"a", "c"}
有返回值
var s = new Set(["a","b","c"]);
var res = s.delete('b')
console.log(s,res);
//结果:Set(2) {"a", "c"} true
#
3.has(value)
:返回一个布尔值,表示该值是否为Set
的成员
var s = new Set(["a","b","c"]);
console.log(s.has('a'));
//结果:true
#
4.clear()
:清除所有成员,没有返回值
var s = new Set(["a","b","c"]);
s.clear();
console.log(s);
//结果:Set(0) {}
Set 结构的实例有四个遍历方法,可以用于遍历成员
1.forEach():使用回调函数遍历每个成员
var s = new Set(["a","b","c"]);
s.forEach(function (item,index,set) {
console.log(item,index,set);
})
//结果: a a Set(3) {"a", "b", "c"}
b b Set(3) {"a", "b", "c"}
c c Set(3) {"a", "b", "c"}
//循环的那一项、当前项索引、完整的set数据结构
//在set数据结构中项和索引一样
#
2.keys():返回键名的遍历器
var s = new Set(["a","b","c"]);
var keys = s.keys();
console.log(keys);
//结果:SetIterator {"a", "b", "c"}
此处遍历打印的值,false表示遍历还没结束。按照插入顺序一个一个打出来
var s = new Set(["a","b","c"]);
var keys = s.keys();
console.log(keys.next());
console.log(keys.next());
console.log(keys.next());
console.log(keys.next());
//结果: {value: "a", done: false}
{value: "b", done: false}
{value: "c", done: false}
{value: undefined, done: true}
#
3.values():返回键值的遍历器
var s = new Set(["a","b","c"]);
var values = s.values();
console.log(values.next());
console.log(values.next());
console.log(values.next());
console.log(values.next());
//结果同上
4.entries():返回键值对的遍历器
var s = new Set(["a","b","c"]);
var entries = s.entries();
console.log(entries.next());
console.log(entries.next());
console.log(entries.next());
console.log(entries.next());
结果。项、索引、是否遍历完了
小例子,数组去重
var arr = [1,2,2,4,5,8,5,"1",NaN,NaN];
var s = new Set(arr);
console.log(s);
结果:
最后:凌晨十二点半,困。。。
还没有评论,来说两句吧...