JavaScript的Map、Set、Date与Math常用方法

43 阅读2分钟

一、Map

/*
	Object中的属性名只能是字符串或者符号,如果传递了一个其他类型的属性名,Js解释器会自动将其转化为字符串格式
	Map数据类型可以储存任何类型的值
*/
const obj ={
    name:"小明";
    age:18;
    [Symbol()]:"123"
}
const a = new Map()
a.size()    //获取Map中键值对的数量
a.set(obj,123)   //向Map中添加任意类型的键值对
a.set(NaN,"haha")  
a.set("name","小明")
a.get(obj)  //  根据key获取值
a.delete(NaN)   //  删除指定数据
a.has(obj)   //  检查a中是否包含指定键
a.clear()   //删除a中全部数据

//将Map转换为数组
const arr = Array.from(a)
const arr2 = [...a]

//遍历Map
for(let [key,value] of a){
    console.log(key,value)
}

map.forEach((k,v,c)=>{  //k,v对应Map中的键值对,c代表Map本身
    console.log(k,v)
})

//a.keys(),a.values()获取Map中的所有key或者value;a.entries()获取Map中的所有实体
for(let k of a.keys()){
    console.log(k)
}

二、Set

/*
	Set用来创建一个集合,和数组的功能类似,但是不能存储重复的数据
		size()获取元素的数量
		add()添加数据
		has()检查set中是否含有某元素
		delete()删除元素
*/
let list = new Set()
list.add("1111")
list.has("1111")

三、Date

/*
	getFullYear()获取四位数的年份
	getMonth() 获取当前日期的月份(0-11)
	getDate() 获取当前日
	getDay() 获取当前是是星期几(0-6),0表示周日
	getTime() 返回当前日期对象的时间戳
	Date.now() 获取当前时间戳(不需要时间对象调用)
    	时间戳:自1970年1月1日0时0分0秒开始到当前时间的毫秒数
    	计算机底层存储时间都是用时间戳形式,
    toLocalDateString()将日期转化为本地的字符串
    toLocalTimeString()将时间转化为本地的字符串
    toLocalString()将日期和时间转化为本地的字符串
*/
let a = new Date()  //创建当前日期
let a = new Date("2019-11-12T11:02:33") //不推荐使用
let a = new Date(2016,1,13,11,02,13) //创建2016年2月13日11点02分13秒
let a = new Date(2006)//表示创建了一个距离1970年1月1日0时0分0秒时间2006毫秒的时间,计算机会自动处理时区问题(+8小时)

四、Math

/*
	Math.pow() 求x的y次幂
	Math.sqrt() 求一个数的平方根
	Math.floor() 向下取整
	Math.ceil()  向上取整
	Math.round() 四舍五入取整
        Math.trunc() 直接去除小数
        Math.random() 生成一个随机数(0<=x<1) 但是多次测试(0<x<1)
*/
//生成一个0-x的随机数
let res = Math.round(Math.random()*x)

//生成一个x-y
let res = Math.round(Math.random()*(y-x)+x)