我从后端收集了时间数组[09:00, 09:30, 10:00, 10:30]...
,我想过滤掉所有早于和包括12:00的时间。
我该如何操作?
我考虑使用$.each
遍历数组,并将字符串相互比较,但我不确定这是否是正确的方法。
我从后端收集了时间数组[09:00, 09:30, 10:00, 10:30]...
,我想过滤掉所有早于和包括12:00的时间。
我该如何操作?
我考虑使用$.each
遍历数组,并将字符串相互比较,但我不确定这是否是正确的方法。
到目前为止,这是唯一一个能够过滤掉数组中没有 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"]
'12:00'
,那么您可以使用索引和slice()方法,例如:
var array = ['09:00', '09:30', '10:00', '10:30', '11:00', '11:30'];
var newarray = array.slice(array.indexOf('10:00') + 1);
snippet.log(JSON.stringify(newarray))
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
如果您不确定值的存在,则需要遍历数组并进行过滤。
var array = ['09:00', '09:30', '10:00', '10:30', '11:00', '11:30'];
var newarray = array.filter(function(item) {
return item > '10:00'
});
snippet.log(JSON.stringify(newarray))
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
12:00
,如果这样更清楚。 - jbehrens94'9:00' > '10:00' === true
。 - VisioNHH:mm
。'12:00'
的元素。
var times = ['09:00', '09:30', '10:00', '10:30', '12:30'];
for (var i = 0; i < times.length; i++) {
if (times[i] <= '12:00') {
times.splice(i--, 1);
}
}
document.body.innerHTML = JSON.stringify(times);
// Running this code snippet will output ["12:30"]
arr.splice(arr.indexOf('12:00') + 1);
尝试使用filter
函数:
var times = ['09:00', '09:30', '10:00', '10:30', '11:00', '11:30', '12:00', '12:30']
, latestTime = breakUpTime('12:00')
, result = ''
;
var newTimes = times.filter(function(time){
var thisTime = breakUpTime(time);
return thisTime['hour'] < latestTime['hour'] || (thisTime['hour'] == latestTime['hour'] && thisTime['minute'] <= latestTime['minute']);
});
function breakUpTime(time) {
var parts = time.split(':');
return {'hour' : parseInt(parts[0]), 'minute' : parseInt(parts[1])};
}
for(var time = 0; time < newTimes.length; time ++) {
result += newTimes[time] + '<br/>';
}
document.write(result);
如果存在 12.00
:
my_array = backend_array.slice(0, backend_array.index("12.00")+1)
["09:00", "09:30", "10:00", "10:30"]
。在这种情况下,@VisioN的第一个答案可以起作用,并且我投了赞成票。 - wintvelt