Это будет единственный ответ, так далеко, что будет отфильтровывать раз, если 12:00
нет в массиве:
var array = ['09:00', '09:30', '10:00', '10:30', '12:00', '12:30', '13:00'];
var result = array.filter(function(e) {
var date = new Date('1.1.2000 ' + e), // create Date object
hours = date.getHours(); // get hours from time
return hours > 12 || (hours === 12 && date.getMinutes() > 0);
});
console.log(result); // ["12:30", "13:00"]
В качестве альтернативы , не полагаясь на объект Date
, мы можем использовать простые манипуляции с строками:
var result = array.filter(function(e) {
var date = e.split(':'), // split time by ':'
hours = +date[0]; // get hours as a number
return hours > 12 || (hours === 12 && +date[1] > 0);
});
console.log(result); // ["12:30", "13:00"]
Еще более простое решение заключается в преобразовании времени в число и отфильтровать все, что меньше или равна 1200
:
var result = array.filter(function(e) {
return +e.replace(':', '') > 1200;
});
console.log(result); // ["12:30", "13:00"]
ли эти времена заказчик? – ojovirtual
Да, они заказываются – jbehrens94
Какой формат имеет ваше время? Обозначение, которое вы указали, недопустимо javascript.Если он находится в строках, тогда формат будет "[" 09:00 "," 09:30 "," 10:00 "," 10:30 "]'. В этом случае первый ответ @ VisioN будет работать и имеет мой голос. – wintvelt