0

我正在尝试获取找到匹配日期的嵌套数组的“标题”......但无济于事。

如果在数组中找到日期,它应该警告“TRUE”。日期必须匹配或在日期范围内。当找到它时,我想获得它被发现匹配的嵌套数组的“标题”。(即,“2013 年 10 月 29 日”的日期与“人 2”下的日期相匹配。我也想说这个标题。

我目前正在遍历两个嵌套数组以检查日期是否匹配。最终,他们将成为更多的人和时间。需要注意的是,没有时间会在数组中出现两次。这将用于在网页上显示在那段时间有空的人。虽然数据库是一个更好的途径,但它位于大型机上,不会被绑定到 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当您调用该函数时,如果日期不匹配,它将返回标题或 else 。

于 2013-07-10T21:23:25.503 回答