我正在尝试制作一个基本日历,以帮助使用 Angular.js 和 Chrome 扩展程序自动化工作中的时间表,但目前我陷入了这部分。
下面您可以看到两个数组:pastTwoWeeks
,它是从今天起 14 天的日期列表,以及从 API 检索的时间表条目
- 这些实际上是具有许多属性的对象,但现在我只使用一个简单的日期。
这是一个jsfiddle,我走对了吗?谢谢 http://jsfiddle.net/v599n/
var pastTwoWeeks = ['15/10/2013', '14/10/2013', '13/10/2013',
'12/10/2013', '11/10/2013', '10/10/2013',
'09/10/2013', '08/10/2013', '07/10/2013',
'06/10/2013', '05/10/2013', '04/10/2013',
'03/10/2013', '02/10/2013'];
var entries = ['11/10/2013', '11/10/2013', '11/10/2013',
'11/10/2013', '10/10/2013', '10/10/2013', '10/10/2013',
'09/10/2013', '09/10/2013', '09/10/2013', '08/10/2013',
'08/10/2013', '07/10/2013', '07/10/2013', '04/10/2013',
'04/10/2013', '03/10/2013', '03/10/2013', '02/10/2013',
'02/10/2013', '02/10/2013', '02/10/2013', '01/10/2013',
'01/10/2013', '01/10/2013'];
var calander = {};
for(var j=0; j< pastTwoWeeks.length; j++) {
var key = pastTwoWeeks[j];
if (key in calander == false) {
calander[key] = {};
}
for(var i = 0; i< entries.length; i++) {
var entry = entries[i];
if(entry === key){
calander[key][entry];
console.log(key + " " + entry);
}
}
}
我想要实现的目标:
- 2013 年 10 月 15 日
- 2013 年 10 月 14 日
- 2013 年 10 月 13 日
- 2013 年 10 月 12 日
- 2013 年 10 月 11 日(4 条)
- 2013 年 10 月 11 日
- 2013 年 10 月 11 日
- 2013 年 10 月 11 日
- 2013 年 10 月 11 日
等等...
最佳答案
Here's a jsfiddle, am I on the right track?
不完全是。
calander[key] = {};
我认为您更想要这里的条目数组,而不是对象。
calander[key][entry];
这不会做任何事情。如果您尝试创建属性,则需要对其进行分配。此外,由于key
的所有entry
都是相同的,因此您只能覆盖同一个属性。更好的 .push()
到数组。
for(var j=0; j< pastTwoWeeks.length; j++) { for(var i = 0; i< entries.length; i++) { if(entry === key)
这效率相当低。您可以通过依次执行循环来做得更好,只需检查您的 entry
是否作为 calender
的键存在,该日历之前已填充 pastTwoWeeks
.
var calendar = {};
for (var i=0; i<pastTwoWeeks.length; i++) {
var key = pastTwoWeeks[i];
calendar[key] = [];
}
for (var i=0; i<entries.length; i++) {
var entry = entries[i],
key = entry; // this might change for more complex objects
if (key in calendar) {
calendar[key].push(entry);
console.log(entry+" added to calendar at " + key);
}
}
关于javascript - 将两个相交的数组合并成一个 HashMap,一个键和多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391232/