本文概述
- 设置属性
- 设定方法
- 弱集
- 迭代器
Set是类似于数组的值的集合, 但不包含任何重复项。它使我们可以存储唯一值。它支持原始值和对象引用。
与映射相似, 集合也被排序, 即集合中的元素按其插入顺序进行迭代。它返回设置的对象。
语法
var s = new Set("val1", "val2", "val3");
让我们通过使用以下示例来理解集合的概念:
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
console.log(colors);
集合的所有元素必须唯一。因此, 以上示例中的设置颜色仅包含四个不同的元素。成功执行以上代码后, 我们将获得以下输出。
输出如下
Set { 'Green', 'Red', 'Orange', 'Yellow' }
让我们看一下Set的属性和方法。
设置属性
S.no. | 属性 | 描述 |
---|---|---|
1. | 设定尺寸 | 此属性返回设置对象中值的数量。 |
Set对象的此属性返回表示Set对象中元素数量的值。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
console.log(colors.size);
console.log(colors);
输出如下
4Set { 'Green', 'Red', 'Orange', 'Yellow' }
设定方法set对象包括几种方法, 其列表如下:
S.no. | 方法 | 描述 |
---|---|---|
1. | Set.prototype.add(值) | 它将新元素附加到set对象的给定值。 |
2. | Set.prototype.clear() | 它从设置的对象中删除所有元素。 |
3. | Set.prototype.delete(值) | 它删除与相应值关联的元素。 |
4. | Set.prototype.entries() | 它返回一个新的迭代器对象, 该对象包含按插入顺序的Set对象中每个元素的数组。 |
5. | Set.prototype.forEach(callbackFn [, thisArg]) | 它执行一次回调函数。 |
6. | Set.prototype.has(值) | 当传递的值在Set中时, 此方法返回true。 |
7. | Set.prototype.values() | 它以插入顺序返回新的迭代器对象, 该对象包含Set中每个元素的值。 |
Set.prototype.add(值)
此方法用于将具有现有值的新元素追加到Set对象。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
console.log(colors.size);
console.log(colors);
输出如下
7Set { 'Green', 'Red', 'Orange', 'Yellow', 'Violet', 'Indigo', 'Blue' }
Set.prototype.clear()
它将清除集合中的所有对象。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
colors.clear()console.log(colors.size);
输出如下
0
Set.prototype.delete(值)
此方法用于从set对象中删除相应的传递值。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
colors.delete('Violet');
console.log(colors.size);
console.log(colors);
输出如下
6Set { 'Green', 'Red', 'Orange', 'Yellow', 'Indigo', 'Blue' }
Set.prototype.entries()
它返回一个新的集合迭代器的对象。它包含每个元素的值的数组。它保持插入顺序。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
var itr = colors.entries();
for(i=0;
i<
colors.size;
i++){console.log(itr.next().value);
}
输出如下
[ 'Green', 'Green' ][ 'Red', 'Red' ][ 'Orange', 'Orange' ][ 'Yellow', 'Yellow' ][ 'Violet', 'Violet' ][ 'Indigo', 'Indigo' ][ 'Blue', 'Blue' ]
Set.prototype.forEach(callbackFn [, thisArg])
它为每个Map条目执行一次指定的回调函数。
【ES6 set介绍和用法详解】例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
function details(values){console.log(values);
}colors.forEach(details);
输出如下
GreenRedOrangeYellowVioletIndigoBlue
Set.prototype.has(值)
它返回一个布尔值, 该值指示元素以及相应的值在Set对象中是否存在。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
colors.add('Indigo');
colors.add('Blue');
colors.add('Violet');
console.log(colors.has('Indigo'));
console.log(colors.has('Violet'));
console.log(colors.has('Cyan'));
输出如下
truetruefalse
Set.prototype.values()
它返回一个新的迭代器对象, 该对象包含按插入顺序设置的Set对象中每个元素的值。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
colors.add('Violet');
var val = colors.values();
console.log(val.next().value);
console.log(val.next().value);
console.log(val.next().value);
console.log(val.next().value);
console.log(val.next().value);
输出如下
GreenRedOrangeYellowViolet
弱集它用于存储对象的集合。它类似于Set对象, 因此它也不能存储重复值。与弱映射相似, 弱集合不能被迭代。弱集只能包含可能被垃圾回收的对象。
弱集合仅包括Set对象的add(value), delete(value)和has(value)方法。
例子
'use strict' let ws = new WeakSet();
let obj = {msg:"Welcome Back!"};
ws.add(obj);
console.log(ws.has(obj));
ws.delete(obj);
console.log(ws.has(obj));
输出如下
truefalse
迭代器迭代器是一个对象, 它定义序列和终止时的返回值。它允许一次访问一组对象。 Set和Map都包含返回迭代器的方法。
迭代器是具有next()方法的对象。当next()方法被调用时, 迭代器将返回一个对象以及’ value’ 和’ done’ 属性。
‘ done’ 是一个布尔值, 在读取集合中的所有元素后返回true。否则, 它返回false。
让我们一起了解Iterator和Set对象的实现。
例子
let colors = new Set(['Green', 'Red', 'Orange', 'Yellow', 'Red']);
var itr = colors.keys();
var itr1 = colors.entries();
var itr2 = colors.values();
console.log(itr.next());
console.log(itr1.next());
console.log(itr2.next());
输出如下
{ value: 'Green', done: false }{ value: [ 'Green', 'Green' ], done: false }{ value: 'Green', done: false }
推荐阅读
- ES6散布运算符解释和用法
- ES6 rest参数用法解释
- ES6 Promise介绍和用法示例
- ES6页面重定向
- ES6页面打印
- Android 切换横竖屏
- App地推业绩统计方法选择不当会产生什么问题()
- adjustsFontSizeToFitWidth 与NSLineBreakByCharWrapping 无法共用
- Could not find com.android.tools.build:gradle:2.2.3