JavaScript创建带日期值的关联结构遇空元素问题求助
解决JavaScript中关联结构的空元素问题
嗨,MYT!我来帮你搞定这个小问题~
你遇到的核心问题是误用了数组来实现键值对映射。JavaScript里的数组是基于索引的有序集合,当你给array[11]赋值时,它会自动填充索引0到10的位置,这些位置没有被赋值就会变成空值,这就是你看到的2 : ""、3 : ""这类多余项的原因。而你想要的是仅包含指定键的关联结构,这时候应该用**普通对象(Object)**来实现。
修正后的代码
// 初始化空对象,而不是数组 var dateMap = {}; // 先检查当前键是否存在,不存在则初始化空数组 if (!dateMap[no]) { dateMap[no] = []; } // 将日期推入对应键的数组中 dateMap[no].push(date);
效果说明
这样修改后,不管你用的no是数字(比如1、11)还是字符串,都会生成你期望的结构:
{ "1": ["2018-01-01", "2018-02-02"], "11": ["2018-01-01", "2018-02-02"] }
不会再出现中间那些多余的空元素啦~如果需要确保键是字符串类型,也可以手动转换:dateMap[String(no)],效果是一样的。
内容的提问来源于stack exchange,提问作者mytDRAGON
相关产品推荐
相关产品推荐

