huabingtao / front-knowledge

基于Issues系统学习前端技术
0 stars 0 forks source link

Set对象 #70

Open huabingtao opened 4 years ago

huabingtao commented 4 years ago

Set 对象

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

简述

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。

构造函数

Set 构造函数能让你创建 Set 对象,其可以存储任意类型的唯一值,无论是 primitive values 或者对象引用。

语法

new Set([iterable]) 参数 iterable 可选 如果传递一个可迭代对象,它的所有元素将不重复地被添加到新的 Set中。 如果不指定此参数或其值为null,则新的 Set为空。 返回值 A new Set object.


let mySet = new Set()

mySet.add(1) // Set [ 1 ] mySet.add(5) // Set [ 1, 5 ] mySet.add(5) // Set [ 1, 5 ] mySet.add('some text') // Set [ 1, 5, 'some text' ] let o = {a: 1, b: 2} mySet.add(o)

## 实例属性
**Set.prototype.size**
返回 Set 对象中的值的个数
## 实例方法
### add
add() 方法用来向一个 Set 对象的末尾添加一个指定的值。

var mySet = new Set();

mySet.add(1); mySet.add(5).add("some text"); // 可以链式调用

### clear
clear() 方法用来清空一个 Set 对象中的所有元素。

var mySet = new Set(); mySet.add(1); mySet.add("foo");

mySet.size; // 2 mySet.has("foo"); // true

mySet.clear();

mySet.size; // 0 mySet.has("bar") // false

### delete
delete() 方法可以从一个 Set 对象中删除指定的元素。成功删除返回 true,否则返回 false。

var mySet = new Set(); mySet.add("foo");

mySet.delete("bar"); // 返回 false,不包含 "bar" 这个元素 mySet.delete("foo"); // 返回 true,删除成功

mySet.has("foo"); // 返回 false,"foo" 已经成功删

### entries
entries() 方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。

var mySet = new Set(); mySet.add("foobar"); mySet.add(1); mySet.add("baz");

var setIter = mySet.entries();

console.log(setIter.next().value); // ["foobar", "foobar"] console.log(setIter.next().value); // [1, 1] console.log(setIter.next().value); // ["baz", "baz"]

### forEach
forEach 方法会根据集合中元素的插入顺序,依次执行提供的回调函数。

function logSetElements(value1, value2, set) { console.log("s[" + value1 + "] = " + value2); }

new Set(["foo", "bar", undefined]).forEach(logSetElements);

// logs: // "s[foo] = foo" // "s[bar] = bar" // "s[undefined] = undefined"

### has
返回一个布尔值,表示该值在Set中存在与否。

mySet.has(1);

### keys() | values()
 values() 方法返回一个 Iterator  对象,该对象按照原Set 对象元素的插入顺序返回其所有元素。

 keys() 方法是这个方法的别名 (与 Map 对象相似); 它的行为与 value 方法完全一致,返回 Set 对象的元素

var mySet = new Set(); mySet.add("foo"); mySet.add("bar"); mySet.add("baz");

var setIter = mySet.values();

console.log(setIter.next().value); // "foo" console.log(setIter.next().value); // "bar" console.log(setIter.next().value); // "baz"