我正在使用javascripts的'.has'地图方法来检查地图是否有日期键。 console.log应返回true但返回false。
http://codepen.io/BradLee/pen/bZWrwx?editors=1010
var map = new Map();
let data = {
"Fri Jun 17 2016" : {
"foo" : "blah"
},
"Sun Jun 26 2016" : {
"foo" : "blah"
},
"Wed May 11 2016" : {
"foo" : "blah"
}
};
for (let dateString of Object.keys(data)) {
let date = new Date(dateString);
date.setHours(0, 0, 0, 0);
map.set(date, "blah");
}
let date = new Date("Fri Jun 17 2016");
date.setHours(0, 0, 0, 0);
console.log(map.has(date));
答案 0 :(得分:1)
javascript地图非常令人印象深刻,实际上像身份地图一样工作,也就是说,只需将密钥与===进行比较,而不是使用某些智能的,可能是用户定义的相等函数或散列。
在您的情况下,这不起作用,因为您的所有日期都有不同的引用。
为了达到你想要的效果,我担心你必须存储和比较时间戳(这是一个数字,所以===会有你正在寻找的正确行为)。它甚至可以与普通对象一起使用,因为数字会得到字符串,但比较仍然有效。 也许更好,将日期直接存储在一个对象中将toString()它,它实际上会工作:
var map = {}