[英]Merge two intersecting arrays into a HashMap, One Key & Multiples values
我正在嘗試制作一個基本的日歷,以幫助使用Angular.js和Chrome擴展程序自動執行工作表,但是現在我仍然停留在這一部分。
在下面可以看到兩個數組: pastTwoWeeks
是從今天開始14天的日期列表,以及從API檢索的時間表entries
-這些實際上是具有許多屬性的對象,但現在我僅使用一個簡單的日期。
這是一個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);
}
}
}
我要實現的目標:
等等...
這是一個jsfiddle,我走對了嗎?
並不是的。
calander[key] = {};
我認為您寧願在這里輸入條目數組,而不是對象。
calander[key][entry];
這什么也沒做。 如果嘗試創建屬性,則需要分配給它。 另外,由於key
所有entry
都是相同的,因此您只會覆蓋one和same屬性。 更好的.push()
數組。
for(var j=0; j< pastTwoWeeks.length; j++) { for(var i = 0; i< entries.length; i++) { if(entry === key)
那是相當低效的。 您可以通過pastTwoWeeks
執行循環來做得更好,並且只需檢查您的entry
是否作為calender
的鍵存在即可,該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);
}
}
這樣的事情應該可以滿足您的需求:
var pastTwoWeeks = ['15/10/2013', '14/10/2013', '13/10/2013', '03/10/2013', '02/10/2013'];
var entries = ['11/10/2013', '11/10/2013', '11/10/2013', '01/10/2013', '01/10/2013'];
var calander = {};
pastTwoWeeks.forEach(function(date) {
calander[date] = [];
});
entries.forEach(function(date) {
if (calander[date] === undefined) calander[date] = [];
calander[date].push(date);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.