Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将时间数组与javascript中的时间进行比较_Javascript_Arrays - Fatal编程技术网

将时间数组与javascript中的时间进行比较

将时间数组与javascript中的时间进行比较,javascript,arrays,Javascript,Arrays,我有一个从数据库获取的时间数组,并将其传递给javascript。当我提醒数组变量时,我会得到时间数组(在我的例子中,有两个不同的时间,比如12:00和14:30),让数组为newdate。 在javascript中,我还接受另一个时间,比如说date=(12:00),我想比较这两个计时。newdate中的两个值都与date进行比较。 怎么做? 我尝试了以下方法 var newdate = new Array(); newdate = $('#newdate').val(); for(i=0;i

我有一个从数据库获取的时间数组,并将其传递给javascript。当我提醒数组变量时,我会得到时间数组(在我的例子中,有两个不同的时间,比如12:00和14:30),让数组为
newdate
。 在javascript中,我还接受另一个时间,比如说
date=
(12:00),我想比较这两个计时。
newdate
中的两个值都与
date
进行比较。 怎么做? 我尝试了以下方法

var newdate = new Array();
newdate = $('#newdate').val();
for(i=0;i<newdate.length;i++) {
    alert(newdate[i]);
}

if (newdate >= date) {
    alert("enable");
}
else {
    alert("disbale");
}
var newdate=newarray();
newdate=$('#newdate').val();
对于(i=0;i=date){
警报(“启用”);
}
否则{
警报(“解散”);
}
当我提醒上面的问题时,我得到1,2,:,0,0,这是错误的,我想要12:00的问题 考虑以下示例:

var string = '12:30';
for (var i = 0; i < string.length; i++) {
    console.log(string[i]); // will print each character separately
}
解决方案 以下是如何针对集合测试时间:

var temp, item, gte;
var time = '12:15';
var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var temp = time.split(':');

for (var i = 0; i < collection.length; i++) {
    item = collection[i].split(':');
    gte = +temp[0] >= +item[0];
    if (gte) gte = +temp[1] >= +item[1];
    // if (gte) gte = +temp[2] >= +item[2]; // uncomment to check seconds
    if (gte) alert(time + ' >= item #' + i);
}
进一步 将收集减少到通过函数测试的次数:

function filter(collection, fn) {
    var i = 0,
        l = collection.length,
        result = [],
        item;
    for (; i < l; i++) {
        item = collection[i];
        if (fn(item, i)) result.push(item);
    }
    return result;
}
用法示例:

var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var gteNoon = filter(collection, gte('12:00'));
var lteNoon = filter(collection, lte('12:00'));
var aroundNoon = filter(collection, function (time) {
    return time.slice(0, 2) === '12';
});

gteNoon;    // ["12:45", "12:00", "12:15", "12:30", "13:00"]
lteNoon;    // ["12:00", "11:00"]
aroundNoon; // ["12:45", "12:00", "12:15", "12:30"]

只需使用
进行拆分,然后进行比较,否则将比较整个值。不需要
for
循环我没听明白你的意思?我是JavaScription新手你在比较时间字符串的每个字符?你的值只有时间吗?就像
12:00
12:00:00
。这是我从数据库中获取的内容,并将其传递给JavaScriptOverwrited,时间为
12:00:00和14:30:00string@VidicjQuery
.val()
返回字符串、数字或数组。但更重要的是,javascript中没有
time
类型。我已经用一个工作示例更新了答案。@Vidic您可以相信我:)事实上,
newdate
是一个字符串这一事实很明显,因为循环会一个接一个地提醒一个字符,这就是字符串的行为:)
function gte(time) {
    time = time.split(':');
    return function (item) {
        item = item.split(':');
        return +time[0] < +item[0] || (
            +time[0] === +item[0] && +time[1] <= +item[1]
        );
    };
}
function lte(time) {
    time = time.split(':');
    return function (item) {
        item = item.split(':');
        return +time[0] >= +item[0] && +time[1] >= +item[1];
    };
}
var collection = ['12:45', '12:00', '12:15', '12:30', '13:00', '11:00'];
var gteNoon = filter(collection, gte('12:00'));
var lteNoon = filter(collection, lte('12:00'));
var aroundNoon = filter(collection, function (time) {
    return time.slice(0, 2) === '12';
});

gteNoon;    // ["12:45", "12:00", "12:15", "12:30", "13:00"]
lteNoon;    // ["12:00", "11:00"]
aroundNoon; // ["12:45", "12:00", "12:15", "12:30"]