Set
基本用法
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成 Set 数据结构。
let s = new Set()
console.log(s.add(10));
console.log(s.add(20));
console.log(s.add(30));
console.log(s.add(10));
以上代码通过add()方法加入Set,结果表明 Set 结构不会添加重复的值。
常见方法
-
add()
-
delete()
-
clear()
-
size属性
-
forEach()
-
has()
-
keys() values() entries()
let s = new Set() console.log(s.add(10)); console.log(s.add(20)); console.log(s.add(30)); console.log(s.add(10)); // console.log(s.has(20)); // console.log(s.size); // console.log(s.delete(20)); // s.clear() // s.forEach((v1, v2) => { // console.log(v1, v2); // }) // console.log(s.keys()); // console.log(s.values()); // console.log(s.entries());
应用
- 可以使用set做数组去重操作
//set-->数组 /* Array.from forEach spread */ // let arr = Array.from(s); // console.log(arr); // let arr = []; // s.forEach(item => { // arr.push(item) // }) // console.log(arr); // let arr = [...s] // console.log(arr); //数组-->set let arr = [10, 20, 30, 10, 10, 20]; console.log(arr); // let s = new Set(arr); // console.log(s); // arr.forEach(item => { // s.add(item); // }) // console.log(s); //数组去重 let s = new Set(arr); // console.log(s); // let arr1 = [...s]; // console.log(arr1); let arr1 = Array.from(s); console.log(arr1); console.log(Array.from(new Set(arr))); console.log([...new Set(arr)]);
- 可以使用set实现并集、交集、差集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // (a 相对于 b 的)差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}
Map
基本用法
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
键值对的集合,各种类型的值(包括对象)都可以作为键
- Object: string - 值
- Map: 值 - 值
let m = new Map();
//添加 设置
m.set('name', '张三');
m.set('age', '30');
m.set('skill', '唱歌');
m.set('age', 80);//修改
console.log(m);
常见方法
-
set()
-
get()
-
delete()
-
clear()
-
size属性
-
forEach()
-
has()
-
keys() values() entries()
let m = new Map();
m.set('name', '李四');
m.set('attr', "打拳");
m.set('age', 20)
// m.set('attr','游泳');//修改
// m.set("age",90);
let key = [];
m.set(key, '哈哈哈哈')
m.set({}, { id: 0, msg: "err" })
// m.set([],'哈哈哈')
// console.log(m.get('age'));
// console.log(m.get([]));//undefined ?
// console.log(m.get(key));
// m.delete("age")
// m.clear();
// console.log(m.size);
console.log(m.has('age1'));
console.log(m);
// console.log(m.values());
// console.log(m.keys());
// console.log(m.entries());
m.forEach((v, k) => {
console.log(k, v);
})