0

一致する日付が見つかったネストされた配列の「タイトル」を取得しようとしていますが、役に立ちません。

配列内に日付が見つかった場合は、"TRUE" というアラートが表示されます。日付は一致するか、日付範囲内にある必要があります。それが見つかったら、それが見つかったネストされた配列の「タイトル」を取得したいと思います。(つまり、日付「2013/10/29」が「Person 2」の下で一致することがわかりました。そのタイトルも言いたいです。

現在、ネストされた両方の配列をループして、日付の一致を確認しています。最終的に、彼らはより多くの人と時間になるでしょう。配列内で時間が 2 回表示されることはありません。これは、Web ページでその時間に誰が利用可能かを表示するために使用されます。データベースの方がはるかに優れた方法ですが、これはメインフレーム上にあり、DB2 に結び付けられることはありません。

それについてもっと簡単な方法があれば、私もすべて耳にします。

var data = []
var data = [
    {title:'Person 1',contents:[
        {primary:"7/09/2013"},{primary:"7/22/2013"},{primary:"10/15/2013"},{primary:"10/28/2013"},{primary:"1/21/2014"},{primary:"2/03/2014"}]},
    {title:'Person 2',contents:[
        {primary:"7/23/2013"},{primary:"8/05/2013"},{primary:"10/29/2013"},{primary:"11/11/2013"},{primary:"2/04/2014"},{primary:"2/17/2014"}]
    }
];

Array.prototype.between = function(arg) {
for(var i=0, j=data.length; i < j; i++){
    for(var p=0, plen=data[i].contents.length; p < plen; p++){
        var d1 = new Date(data[i].contents[0].primary),
            d2 = new Date(data[i].contents[1].primary),
            d4 = new Date(data[i].contents[2].primary),
            d5 = new Date(data[i].contents[3].primary),
            d3 = new Date(arg);
        }
        //alert(data[i].title); //Using "data[i].title" will grab both titles but I only need one.
    }
return ((d1.getTime() <= d3.getTime() && d3.getTime() <= d2.getTime()) || (d4.getTime() <= d3.getTime() && d3.getTime() <= d5.getTime()));
}

alert(data.between("10/29/2013"));

そしてフィドル...

http://jsfiddle.net/sherman2k2/E3ASy/1/

4

1 に答える 1

1

コードは次のようになるはずです。

Array.prototype.between = function(arg) {
    for(var i=0, j=data.length; i < j; i++){
        for(var p=0, plen=data[i].contents.length; p < plen; p++){
            var d1 = new Date(data[i].contents[0].primary),
                d2 = new Date(data[i].contents[1].primary),
                d4 = new Date(data[i].contents[2].primary),
                d5 = new Date(data[i].contents[3].primary),
                d3 = new Date(arg);
            if ((d1.getTime() <= d3.getTime() && d3.getTime() <= d2.getTime()) || (d4.getTime() <= d3.getTime() && d3.getTime() <= d5.getTime()))
                return data[i].title;
        }
    }
}

関数を呼び出すと、タイトルが返されるかundefined、日付が一致しない場合はそれ以外が返されます。

于 2013-07-10T21:23:25.503 に答える