我已經很長一段時間了,因爲我必須處理一些JavaScript代碼,而且我很生鏽。根據值拆分數組
我需要拆分一個這樣的數組:
Object ( [0] => 2013-04-12 [1] => text [2] => text [3] => text [4] => text [5] => 2013-04-11 [6] => text [7] => text [8] => text [9] => text [10] => text [11] => text [12] => 2013-04-10 [13] => text [14] => text [15] => text [16] => text [17] => 2013-04-09 [18] => text [19] => text [20] => text )
成JSON對象或數組,其中索引0始終日期:
Object0 ( [0] => 2013-04-12 [1] => text [2] => text [3] => text [4] => text ) Object1 ( [0] => 2013-04-11 [1] => text [2] => text [3] => text [4] => text [5] => text [6] => text ) Object2 ( [0] => 2013-04-10 [1] => text [2] => text [3] => text [4] => text ) Object3 ( [0] => 2013-04-09 [1] => text [2] => text [3] => text )
因此,大家可以看到,我只能用計算出每個新陣列的值,其大小可以不同。
感謝您的任何幫助。
UPDATE 對不起,我沒有發表我的代碼在最初的問題,因爲我所寫的是太垃圾(和我很慚愧)。 在這裏我最終使用的代碼感謝來自Bangerang的解決方案。 感謝大家的幫助和貢獻。
var events = [];
var result = [];
var j = 0;
for (var i = 0; i < tableData.length; i++){
if (/^(\d{4})-(\d{2})-(\d{2})$/.test(tableData[i])){ //Returning true if it's just numbers
j = j + 1;
events[j] = [];
events[j].push(tableData[i]);
result.push(events[j]);
} else {
events[j].push(tableData[i]);
}
}
// Then I write the json message which will be eval to use with FullCalendar.
var json_events = '[';
for (var i = 1; i <= events.length; i++){
if (typeof events[i] !== 'undefined' && events[i].length > 0) {
for (var j = 0; j < events[i].length; j++){
if(/@/.test(events[i][j])){
json_events += '{"start":"' + events[i][0] + '",';
json_events += '"textColor":"black",';
var tmp = events[i][j].split("@");
json_events += '"backgroundColor":"' + tmp[0] + '",';
var text_pattern = new RegExp(/<b>([a-z_]+)<\/b>(.+)/);
var title_desc = text_pattern.exec(tmp[1]);
json_events += '"title":"' + title_desc[1] + '",';
json_events += '"description":"' + title_desc[0] + '"';
json_events += '},';
}
}
}
}
json_events += ']';
json_events = json_events.replace("},]","}]");
'/ ^(\ d {4}) - (\ d {2}) - (\ d {2})$ /'與您的示例中的日期格式不匹配。日期是以字符串還是數字形式存儲的? – kay
對不起,你是對的,我在此期間改變了日期格式(發現RegExp和exec())。我會更新這個問題以反映我的變化。 – Jonas
請不要在標題中加入「解決」。 Stackoverflow用接受的答案對問題進行顏色編碼。 – kay