2012-10-17 91 views
1

我有這樣的對象:保存對象的變量解析它

var eventsDates = new Array(
    "basket":"11-10-2012", 
    "soccer":"21-10-2012", 
    "soccer":"28-10-2012", 
    "baseball":"25-11-2012", 
    "baseball":"15-12-2012" 
); 

,我需要通過例如競爭只有足球不是儲蓄導致這樣

var eventsDates = new Array(
    "21-10-2012", 
    "28-10-2012" 
); 

任何建議

提取日期

Luca

+4

這不是一個對象,這是一個錯誤語法的數組。 – undefined

+0

第一個對象是不正確的語法,即使使用'{}'對象表示法,您也有重複的鍵。 – pimvdb

+0

應該如何首先判斷語法 – roybatty

回答

1

請勿混用arraysobjects使用其中之一:

var eventDates = [ 
    "11-10-2012", 
    "21-10-2012", 
    "28-10-2012", 
    "25-11-2012", 
    "15-12-2012" 
]; 

OR

var eventDates = { 
    "basket":"11-10-2012", 
    "soccer":"21-10-2012", 
    "soccer":"28-10-2012", 
    "baseball":"25-11-2012", 
    "baseball":"15-12-2012" 
}; 

這就是說,你不能重複使用相同的密鑰(如baseball),所以最好的結構將是下列之一:

var eventDates = { 
    "basket": ["11-10-2012"], 
    "soccer": ["21-10-2012", "28-10-2012"] 
    "baseball": ["25-11-2012", "15-12-2012"] 
}; 

而像eventDates.baseball

$.each(eventDates.baseball, function (k, v) { 
    alert(v); 
}); 
訪問

你也可以做以下事情,但是你必須使用一個自定義的提取器, ld包括在你想要日期的任何時候遍歷整個數組,只有某個name

var eventDates = [ 
    {"name": "basket", "date":"11-10-2012"}, 
    {"name":"soccer", "date":"21-10-2012"}, 
    {"name": "soccer", "date":"28-10-2012", 
    {"name": "baseball", "date":"25-11-2012"}, 
    {"name":"baseball", "date":"15-12-2012"} 
]; 
0

我會考慮這種任務的不同數據結構:

var eventDates = { 
    Soccer: [{ 
     date: ... 
    ]}, 
    Basket: [{ 
     date: ... 
    ]} 
}; 

然後你可以很容易地訪問f.e.所有足球日期:

for (var i = 0; i <= eventDates.Soccer.length; i++) { 
    // Do something with eventDates.Soccer[i] 
} 
0
var eventsDates = { 
    "basket":["11-10-2012"], 
    "soccer":["21-10-2012","28-10-2012"], 
    "baseball":["25-11-2012","15-12-2012"] 
    } 


var soccerDates = eventsDates.soccer; 
1

它看起來像你建議你有一個陣列內的一系列對象:

var events = [ 
    {"basket":"11-10-2012"}, 
    {"soccer":"21-10-2012"}, 
    {"soccer":"28-10-2012"}, 
    {"baseball":"25-11-2012"}, 
    {"baseball":"15-12-2012"} 
]; 

var count = events.length, dates = [], m; 

while (count--) 
    if (m = events[count]["soccer"]) 
     dates.push(m); 

console.log(dates); 

小提琴:http://jsfiddle.net/YX4Kq/

+0

太棒了! 這是另一種讓陣列將更多日期放在同一個blockquote中的方法嗎? – roybatty

+0

@roybatty我不明白你在問什麼。 – Sampson