set相似于数组,但成员惟一,没有重复值。javascript
const s = new Set();
[ 1, 3, 2, 4, 5, 3, 2, 1, 10, 7].forEach(a => s.add(a));
console.log(s);复制代码
set 遍历出来是以key value的形式存储java
当Set加入值的时候,不会发生类型转换,set判断值相似于(===)精确相等运算符,但有区别,在于NaN等于自身,但精确相等运算符认为nan不等于自身。数组
const set = new Set();
const a = NaN;
const b = NaN;
set.add(a);
set.add(b);
console.log(set);
// Set(1) {NaN}复制代码
set的两个对象老是不相等的bash
let set = new Set();
set.add({});
set.size // 1
set.add({});
set.size // 2复制代码
Set 实例的方法分为两大类:操做方法(用于操做数据)和遍历方法(用于遍历成员)。下面先介绍四个操做方法。数据结构
add(value)
:添加某个值,返回 Set 结构自己。delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。has(value)
:返回一个布尔值,表示该值是否为Set
的成员。clear()
:清除全部成员,没有返回值。const item = new Set([ 9, 2, 3, 4, 2, 1, 3, 8, 1, 9 ]);
console.log(item);
const array = Array.from(item);
console.log(array);
for (let a of array) {
console.log(a);
}复制代码
Set结构有4种遍历方法,能够便利成员函数
keys()
:返回键名的遍历器values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每一个成员Set的遍历顺序就是插入顺序,(Set保存一个回调函数,调用时就能保证按照添加顺序调用)
Set的forEach方法:ui
const set2 = new Set([ 1, 5, 4, 5 ]);
set2.forEach((value, key) => {
console.log(key + ':' + value);
});复制代码
set可用扩展运算符将Set对象转为数组;spa
const set = new Set([ 1, 2, 3, 4, 5 ]);
console.log('set', set);
console.log('...set', [...set]);
console.log('Array.from', Array.from(set));复制代码
“键值对”数据结构,3d
const map = new Map([ ['name', '张三'], ['title', 'author'] ]); console.log(map); console.log(map.has('name')); console.log(map.get('title'));
复制代码
1. size属性code
const map = new Map(); map.set('a', '111'); map.set('b', '222'); console.log(map.size); // 2复制代码
2. set(key, value)
const map = new Map() .set(1, 'a') .set(2, 'b') .set(3, 'c'); map.set(2, 'h'); console.log(map);复制代码
set() 方法能够采用链式赋值,若第二次给同名键赋值,则覆盖第一次的值。
3. get(key)
4. delete(key)
5. has(key)
6. clear() 清除全部成员
keys()
:返回键名的遍历器。values()
:返回键值的遍历器。entries()
:返回全部成员的遍历器。forEach()
:遍历 Map 的全部成员。map的便利顺序就是插入顺序
map 转化为数组的方法:扩展运算符
const map = new Map([ [ 'f', 'no' ], [ 't', 'yes' ] ]);
console.log([...map]);复制代码
const map = new Map([ [ '111', 'su' ], [ '333', 'zhou' ] ]); console.log(map);复制代码
{"111" => "su", "333" => "zhou"}复制代码