根据最小和最大日期对数组进行排序?
Sort array based on min and max date?
基本上我有一个日期数组:
var array = ["2017-01-22 00:21:17.0",
"2017-01-27 11:30:23.0",
"2017-01-24 15:53:21.0",
"2017-01-27 11:34:18.0",
"2017-01-26 16:55:48.0",
"2017-01-22 11:57:12.0",
"2017-01-27 11:35:43.0"];
我需要根据最大和最小日期对其进行排序;
我试过了:
var lowest = _.max(array, function(o){return o.val;});
console.log(lowest);
但是这个returns-Infinity
和_.minreturnsInfinity
此致:)
您可以在没有回调的情况下使用 Array#sort
。这按字符串排序,它在索引零处获取最小值,在最后一个索引处获取最大日期。
var array = ["2017-01-22 00:21:17.0", "2017-01-27 11:30:23.0", "2017-01-24 15:53:21.0", "2017-01-27 11:34:18.0", "2017-01-26 16:55:48.0", "2017-01-22 11:57:12.0", "2017-01-27 11:35:43.0"];
array.sort();
console.log(array);
console.log('min', array[0]);
console.log('max', array[array.length - 1]);
.as-console-wrapper { max-height: 100% !important; top: 0; }
另一种解决方案是使用 Array#reduce
。
var array = ["2017-01-22 00:21:17.0", "2017-01-27 11:30:23.0", "2017-01-24 15:53:21.0", "2017-01-27 11:34:18.0", "2017-01-26 16:55:48.0", "2017-01-22 11:57:12.0", "2017-01-27 11:35:43.0"],
result = array.reduce(function (r, a, i) {
if (!i) {
return { min: a, max: a};
}
if (a < r.min) {
r.min = a;
}
if (a > r.max) {
r.max = a;
}
return r;
}, undefined);
console.log(result);
var array = ["2017-01-22 00:21:17.0",
"2017-01-27 11:30:23.0",
"2017-01-24 15:53:21.0",
"2017-01-27 11:34:18.0",
"2017-01-26 16:55:48.0",
"2017-01-22 11:57:12.0",
"2017-01-27 11:35:43.0"];
var timeStamped = array.map((item) => new Date(item).getTime());
console.log('Max is ', new Date(Math.max.apply(null,timeStamped)). toUTCString());
console.log('Min is ', new Date(Math.min.apply(null,timeStamped)). toUTCString());
基本上我有一个日期数组:
var array = ["2017-01-22 00:21:17.0",
"2017-01-27 11:30:23.0",
"2017-01-24 15:53:21.0",
"2017-01-27 11:34:18.0",
"2017-01-26 16:55:48.0",
"2017-01-22 11:57:12.0",
"2017-01-27 11:35:43.0"];
我需要根据最大和最小日期对其进行排序; 我试过了:
var lowest = _.max(array, function(o){return o.val;});
console.log(lowest);
但是这个returns-Infinity
和_.minreturnsInfinity
此致:)
您可以在没有回调的情况下使用 Array#sort
。这按字符串排序,它在索引零处获取最小值,在最后一个索引处获取最大日期。
var array = ["2017-01-22 00:21:17.0", "2017-01-27 11:30:23.0", "2017-01-24 15:53:21.0", "2017-01-27 11:34:18.0", "2017-01-26 16:55:48.0", "2017-01-22 11:57:12.0", "2017-01-27 11:35:43.0"];
array.sort();
console.log(array);
console.log('min', array[0]);
console.log('max', array[array.length - 1]);
.as-console-wrapper { max-height: 100% !important; top: 0; }
另一种解决方案是使用 Array#reduce
。
var array = ["2017-01-22 00:21:17.0", "2017-01-27 11:30:23.0", "2017-01-24 15:53:21.0", "2017-01-27 11:34:18.0", "2017-01-26 16:55:48.0", "2017-01-22 11:57:12.0", "2017-01-27 11:35:43.0"],
result = array.reduce(function (r, a, i) {
if (!i) {
return { min: a, max: a};
}
if (a < r.min) {
r.min = a;
}
if (a > r.max) {
r.max = a;
}
return r;
}, undefined);
console.log(result);
var array = ["2017-01-22 00:21:17.0",
"2017-01-27 11:30:23.0",
"2017-01-24 15:53:21.0",
"2017-01-27 11:34:18.0",
"2017-01-26 16:55:48.0",
"2017-01-22 11:57:12.0",
"2017-01-27 11:35:43.0"];
var timeStamped = array.map((item) => new Date(item).getTime());
console.log('Max is ', new Date(Math.max.apply(null,timeStamped)). toUTCString());
console.log('Min is ', new Date(Math.min.apply(null,timeStamped)). toUTCString());