Javascript的Object本身就是键值对的数据结构,但实际上属性和值构成的是”字符串-值“对,属性只能是字符串,如果传个对象字面量作为属性名,那么会默认把对象转换成字符串,结果这个属性名就变成”[object Object]“。
ES6提供了”值-值“对的数据结构,键名不仅可以是字符串,也可以是对象。它是一个更完善的Hash结构。
推荐博客:https://www.cnblogs.com/kongxianghai/p/7309735.html
其中的entries比较常用:
这是一个遍历所有键值对的函数:
比如我们现在有一个需求:满足参数是1~4会调用fun1函数,值是40就会调用fun2函数,不能用if-else形式
const map = new Map();
const statusArr = [1, 2, 3, 4]
const status2 = 40
map.set(statusArr, fun1);
map.set(status2, fun2);
let handle = function () { }
function fun1() {
console.log("This is a fun1");
}
function fun2() {
console.log("This is a fun2");
}
const getval = (param) => {
for (let value of map.entries()) {
console.log(JSON.stringify(value))
if (typeof (value[0]) == "object") {
if (value[0].includes(param)) {
handle = value[1];
}
}else{
if(value[0]==param){
handle=value[1];
}
}
}
}
const a = 40;
getval(a);
handle();
这里我们可以发现我们的value是一个数组,value[0]表示是键,value[1]表示是键值