Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set对象 #70

Open
huabingtao opened this issue Jul 7, 2020 · 1 comment
Open

Set对象 #70

huabingtao opened this issue Jul 7, 2020 · 1 comment
Assignees
Labels
javaScript This is something about JavaScript

Comments

@huabingtao
Copy link
Owner

No description provided.

@huabingtao huabingtao added the javaScript This is something about JavaScript label Jul 7, 2020
@huabingtao huabingtao self-assigned this Jul 7, 2020
@huabingtao
Copy link
Owner Author

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"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
javaScript This is something about JavaScript
Projects
Status: 已完成
Development

No branches or pull requests

1 participant