Set
ES6 提供了新的数据结构 Set。它
类似于数组
(类数组),但是成员的值都是唯一
的,没有重复的值。
const set = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => set.add(x));
for (let i of set) {
console.log(i); // 2 3 5 4
}
size
Set.prototype.size
属性,可以获取Set
类数组的长度。
let set = new Set([1,4,7]);
set.size // 3
add()
Set.prototype.add(value)
方法,在Set对象尾部添加一个元素,返回这个Set对象。
let set = new Set([1,4,7]);
set.add(9) // Set(4) {1, 4, 7, 9}
clear()
Set.prototype.clear()
方法,可以清空Set类数组中的所有元素。
let set = new Set([1,4,7]);
set.clear() // Set(0) {}
delete()
Set.prototype.delete(value)
方法,移除Set中与传入值相等的元素,返回Set.prototype.has(value)
操作会返回的值(判断是否存在,返回true,否则返回false)。
let set = new Set([1,4,7]);
set.delete(1) // 返回true 还剩 Set(2) {4, 7}
has()
Set.prototype.has(value)
方法,返回一个Boolean
值,表示这个值是否存在Set中。
let set = new Set([1,4,7]);
set.has(4) //true
字符串
let set = new Set('hello world');
console.log(set); // Set(8) {"h", "e", "l", "o", " ", …}
数组
let set = new Set([1,2,3,4]);
console.log(set); // Set(4) {1, 2, 3, 4}
Set数组去重
const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]
console.log([...new Set(numbers)])
Map
ES6 提供了
Map
数据结构。它类似于对象
,也是键值对的集合
,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
size
let map = new Map(); // Map(5) {1 => 2, "a" => 3, null => 3, undefined => 3, true => 3}
map.size // 5
set()
Map.prototype.set(key, value)
方法,设置Map对象中的键值,返回这个Map对象
let map = new Map();
map.set(1,2) // Map(1) {1 => 2}
get()
Map.prototype.get(key)
方法,获取对应传入值的value,如果不存在返回undefined
let map = new Map([[1,2],['a', 3],[null,4],[undefined,5],[true,6],[true,7]]);
console.log(map.get(true)); // 7
为什么是7呢?看一下数据都是什么
// map的值也是唯一的,会保留最后一个相同的值。
Map(5) {1 => 2, "a" => 3, null => 4, undefined => 5, true => 7}
has()
Map.prototype.has(key)
方法,返回一个布尔值,表示Map实例是否包含键对应的值。
let map = new Map([1,2])
map.has(1) // true
map.has(2) // false
delete()
Map.prototype.delete(key)
方法,如果Map
对象中存在该元素,则移除它并返回true
;否则如果该元素不存在则返回false
。
let map = new Map([[1,2],['a', 3]]);
map.delete(1) // true
console.log(map); // Map(1) {"a" => 3}
clear()
Map.prototype.clear()
方法,移除Map对象的所有键/值对 。
let map = new Map([[1,2],['a', 3]]);
map.clear() // Map(0) {}