我在JavaScript中遇到了一些問題。在JavaScript中填充多維數組
我需要獲取數組寬度日期作爲鍵和事件作爲值。
在PHP中我會做這樣的事情:
$var = new array();
Loop
$var[$date][] = $event;
End loop
你知道我是什麼意思?
感謝, 問候
我在JavaScript中遇到了一些問題。在JavaScript中填充多維數組
我需要獲取數組寬度日期作爲鍵和事件作爲值。
在PHP中我會做這樣的事情:
$var = new array();
Loop
$var[$date][] = $event;
End loop
你知道我是什麼意思?
感謝, 問候
在JavaScript中,您可以創建一個數據結構,像這樣:
var events = {
'2009-09-09': [],
'2010-10-10': [],
'2011-11-11': []
};
的events = { ... }
是一個對象在JavaScript中的文字。 javscript中的對象非常類似於以屬性作爲關鍵字的哈希值,所以這實際上將用作日期中鍵入的哈希值。每個日期都用一個空數組進行初始化。
你還可以用事件填滿它這樣
events[date].push(event);
如果你不提前知道時間日期,可以動態填充哈希。所以,你只有一個空的哈希開始:
if (!(date in events)) events[date] = [];
events[date].push(event);
的date in events
檢查:
var events = {};
然後,你每次去添加事件,像這次檢查的日期鍵看看密鑰是否存在,並且!
否定它。因此,如果日期鍵不存在,則它會使用空數組初始化日期鍵。然後它像往常一樣推動該日期。
「紅寶石中的物體」? – Dave
感謝您的回答。爲了更好地解釋我:我正在獲取對象中的循環日期。我想用多個事件填充所有日期,也不知道如何在沒有指定任何鍵的情況下將元素添加到數組中,例如在PHP $ events [$ date] [] = $ event中; –
@dave,oops,typo。固定。 –
Javascript關鍵值映射由Object
s處理。一個空對象只是{}
。你可以做到這一點有點像的東西(注意,VAR是在Javascript中的保留字,所以我不能準確地複製你的例子):
var variable = {};
var date_list = [1,2,3];
var event_list = [4,5,6];
for (i in date_list){
var key = date_list[i];
var value = event_list[i];
variable[key] = value;
}
// variable now contains: {1:4, 2:5, 3:6}
console.log(variable[1]);
// prints 4
編輯:這是基本的語法。如果你想爲每個鍵都有一個數組,只需做一些類似的事情,但是使用數組而不是數字在event_list中。例如:
my_dates = {'2011': [1,2,3], '2010': [6,7,8]}
將元素添加到列表中,你可以使用JavaScript的push
數組對象的方法...
events_by_date = {};
...
for (var i=0; i<events.length; i++) {
if (!events_by_date[events[i].date]) {
// This is the first event on this date
// so create the list
events_by_date[events[i].date] = [];
}
// Add the event to the list of events in that date
events_by_date[events[i].date].push(events[i]);
}
不,我真的不知道你的意思。但我猜測併發布了一個答案。如果這不能回答你的問題,請評論解釋你的問題。 –