JS中Set对象的创建,遍历和使用(API)

版权声明:wuyujin1997 reserve all rights. https://blog.csdn.net/wuyujin1997/article/details/88741351

intro

Set对象是ES6新增,特点:元素不重复。

API

new Set(?arr) 构造(可以传入数组,会自动去重)。
size 集合大小

add(value) - Set 添加元素。(可链式编程)
has(value) - boolean 查询元素是否存在。

delete(value) - boolean 删除
clear() 清空

forEach(callbackFn, ?thisArg) 对容器内每个元素做操作。

keys() 用法同values(),因为set只有value列表。
values()
entries() 不推荐。会返回两倍的set(见代码)。

遍历

  1. forEach()
  2. set.values()和set.keys()的使用方法相同。
  3. set.entries()不推荐使用,会返回双倍的数据量。
    最后每一个entry的value依旧是长度为2的数组[value, value]
// 初始化
set = new Set([1,2,3,"4"]);

// forEach
set.forEach(function(value) {console.log(value);});

// 利用values()
values = set.values();
for (value of values) {
  console.log(value);
}

values = set.values();
for (i = 0; i < set.size; i++) {
  console.log(values.next().value);
}

// keys()方法的两种与values()用法相同。

// 利用entries()
entries =  set.entries();
for (entry of entries) {
  console.log(entry);
}
// (2) [1, 1]
// (2) [2, 2]
// (2) [3, 3]
// (2) ["4", "4"]

entries =  set.entries();
for ([key, value] of entries) {
  console.log(key, value);
}
// 1 1
// 2 2
// 3 3
// 4 4

// 可见,虽然是set对象,但是调用entries()会返回双倍的数据量。
entries = set.entries();
for ([key, value] of entries) {
  console.log(value); // 只打印一次value。
}

// 调用`set.entries().next().value[0]`也可以。

猜你喜欢

转载自blog.csdn.net/wuyujin1997/article/details/88741351