以下は現在のコードのデモです: http://mobilocloud.com/schedule/
複数の配列を含む1つのjsオブジェクトがあり、各配列には2つの時間ハッシュがあります(1つの開始時間と1つの終了時間/私はそれらを使用していますgetTime()
)。オブジェクトに含まれるすべての配列を比較して、時間範囲間のすべての交差を確認したいと考えています。スクリプトは機能していますが、一度に 2 つの配列しか比較できません (最終的に、2 つの重複したイベントのグループを取得します)。2つだけでなく、すべての重複したイベントのグループを取得したい.
実際のコードは次のとおりです。
function _DetectOverlapedEvents(column) {
events;
groups;
sgroups;
todeoverlap[column] = new Array();
groups[column] = new Array();
sgroups[column] = new Array();
var $curid=0;
var $curevent= new Array();
if(events[column].length > 1){
$(events[column]).each(function(key, $secondevent) {
//alert("Comparing : " + $curevent["name"] + " and " + $secondevent["name"] + "\n" + $curevent["starthash"] + "<" +$secondevent["endhash"] + " = " + ($curevent["starthash"] < $secondevent["endhash"]) + "\n&&\n" + $curevent["endhash"] + ">" + $secondevent["starthash"] + " = " + ($curevent["endhash"] > $secondevent["starthash"]));
if($curevent.length<2) {
$curevent=$secondevent;
} else if(($curevent["starthash"] < $secondevent["endhash"]) && ($curevent["endhash"] > $secondevent["starthash"])) {
//alert("added " + $curevent["name"] + " and " + $secondevent["name"]);
toextend = {left: $curevent, right: $secondevent};
groups[column].push(toextend);
sgroups[column].push($curevent, $secondevent);
//console.log("groups: " + JSON.stringify(groups[column]));
$curid++;
}
$curevent = $secondevent;
});
}
//console.log(JSON.stringify(groups));
}