1

以下は現在のコードのデモです: 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));
}

4

0 に答える 0