new Map() && new Set()

630 阅读1分钟

定义一个Set

//存储的数据必须是唯一的
//参数是一个可遍历的对象(不一定是数组)
let s = new Set();
let s = new Set([1,2,3,4])

储存数据

s.add('hello');
s.add('set');

s.add('hello').add('vue').add('hello');
console.log(s)
//Set(2) {'hello','vue'}
//重复的会被过滤掉

删除数据

s.delete('hello'); //删除指定数据
s.clear(); //情况数据

判断数据是否存在

s.has('hello') // true

数据大小

s.size // 2

读数据

s.keys() //返回一个可遍历对象
s.value() //
s.entries()//
s.forEach(item => {
    console.log(item)
})
for (let [k,v] of s){
    console.log(k,v)
}

转换成数组

console.log([...s])
console.log([...values])

数组去重

const arr = [...new Set([1,2,1,2,3,4])]

weakset

//弱引用类型
//key 必须是对象
//不可迭代
//只有基本的增删改查
let map = new WeakSet()
map.add(object,value)

定义一个Map

let map = new Map([[key,value],[key,value]])

写入数据

let map = new Map()
map.set(1,2) 
map.set(3,4)
// key value的形式
// 输出 Map(2) {1 => 2,3 => 4}

修改数据

map.set(1,3) 
// 输出 Map(1) {1 => 3}

删除数据

map.delete(1)
// 字典的形式 注重key
// 输出 Map(1) {3 => 4}

清空数据

map.clear()
// 输出 Map(0) {}

统计数据

console.log(map.size)
// 输出 2

查找数据

console.log(map.has(2))
// 输出 false
// 特别注意 查找的是key

获取数据

console.log(map.get(1))
// 输出 2

获取数据的索引

console.log(map.keys())
// 输出 MapIterator {1,3}

获取数据的value值

console.log(map.values())
// 输出 MapIterator {2,4}

entries

console.log(map.entries())
// 输出一个可遍历的对象
// 输出 MapIterator {1 => 2,3 => 4}

遍历

map.forEach((v,k) => {
    console.log(v,k)
})
//第一个参数是value
// 1 2
// 3 4

for (let [k,v] of map){
    console.log(k,v)
}
// 2 1
// 4 3

map转换为数组

console.log([...map]) 
console.log([...map.entries()])
console.log([...map.keys()])
console.log([...map.values()])

weakmap

//弱引用类型
//key 必须是对象
//不可迭代
//只有基本的增删改查
let map = new WeakMap()
map.set(object,value)