Map与Set的使用

Set是一种数据结构,类似于数组,但是它的值都是唯一的,因为它有Symbol.itearator接口,所以可以使用for …of…进行遍历
它的属性和方法有:
size:集合的元素个数
add:增加一个新元素
delete :删除元素
clear:清空
has:判断是否有某个元素,返回布尔值

const cities = ['nanjing', 'beijing', 'guangzhou', 'shenzhen', 'guangzhou']
const set = new Set(cities)
const len = set.size
const add = set.add('shanghai')
set.delete('beijing')
const res = set.has('nanjing')
set.clear()
console.log(Object.prototype.toString.call(set)); //[object Set]
console.log(len,add,res); //4, Set(4){"nanjing", "guangzhou", "shenzhen", "shanghai"},true 

Map是一种数据结构,类似于对象,是键值对的集合。因为它有Symbol.itearator接口,所以可以使用for …of…进行遍历
它的属性和方法有:
size:元素个数
set:增加一个元素
get:返回键名对象的键值
clear:清空
has:判断是否有某个元素,返回布尔值

const m = new Map()
m.set('name', 'nick')
const length = m.size
const name = m.get('name')
const age = m.has('age')
m.clear()
console.log(Object.prototype.toString.call(m)); //[object Map]
console.log(length, name, age);  //1,nick,false

Map结合Object.entries使用
为何要结合Object.entries使用,直接使用不可以嘛?
答案是不可以的,因为对象是不可迭代的,Object.entries可以让对象可迭代,返回的是一个二维数组。
也可以直接为对象添加Symbol.iterator接口,更多查看对象怎么样可迭代?

let obj = {
    
    
    name: 'china',
    city: ["beijing", 'hanghai', 'nanjing']
}
//使用Object.entries会将对象转为二维数组,
//与之相反的是Object.fromEntrie会将二维数组转为对象
let map = new Map(Object.entries(obj))
let c = map.get('city')
console.log(c);

应用:获取今天应该做什么?

let obj = {
    
    
    monday: "workday",
    tuseday: "workday",
    wednesday: "workday",
    thursday: "workday",
    friday: "workday",
    saturday: "break",
    sunday: "break",
}
let m = new Map(Object.entries(obj))
let day = 'sunday'
console.log(m.get(day));  //break

猜你喜欢

转载自blog.csdn.net/m0_48076809/article/details/108687362