在多维JavaScript对象中查找最大/最小日期
Finding max/min date in multidimensional JavaScript object
从下面的对象中找到最早开始日期和最晚结束日期的最简单方法是什么?
(对不起-我意识到有很多类似的问题已经在那里,但我的JS技能很差,我还没有能够将任何解决方案应用到我自己的数据。因此,话虽如此,一个代码示例肯定会帮助我在任何答案-谢谢!!)
var ganttData = [
{
"id": 123456,
"name": "Sample Project",
"start": new Date(2010,11,6),
"end": new Date(2011,0,6),
"status": "Not Started",
"phase": [
{
"id": 123457,
"name": "Sample Phase",
"start": new Date(2010,11,6),
"end": new Date(2010,11,13),
"status": "Not Started",
"task": [
{
"id": 123458,
"name": "Sample Task",
"start": new Date(2010,11,6),
"end": new Date(2010,11,8),
"status": "Not Started"
}
]
},
{
"id": 123459,
"name": "Another Phase",
"start": new Date(2010,11,13),
"end": new Date(2011,0,20),
"status": "Not Started"
}
]
}
]
您可以简单地递归遍历树
var max = new Date(-100000000*86400000);
var min = new Date( 100000000*86400000);
function compare(key,value) {
if (key == "start" && value < min)
min=value;
else if (key == "end" && value > max)
max=value;
}
function traverse(obj, fun) {
for (prop in obj) {
fun.apply(this,[prop, obj[prop]]);
if (typeof(obj[prop]) == "object") {
traverse(obj[prop], fun);
}
}
}
traverse(ganttData, compare);
> max
Thu Jan 20 2011 00:00:00 GMT+0100 (W. Europe Standard Time)
> min
Mon Dec 06 2010 00:00:00 GMT+0100 (W. Europe Standard Time)
上述工作直到您将开始和结束从Date
更改为string
。现在你需要做这样的事情
arr = "2010,11,13".split(",");
date = new Date(arr[0], arr[1], arr[2]);
我从JavaScript参考中得到了颠倒的最小和最大日期。
function getEarliestAndLatest(ganttData) {
var earliest = ganttData.start,
latest = ganttData.end,
phase,
task;
for (var i = 0, countPhases = ganttData.phase.length; i < countPhases; i++) {
phase = ganttData.phase[i];
if (phase.start < earliest) {
earliest = phase.start;
}
if (phase.end > latest) {
latest = phase.end;
}
if (typeof phase.task !== 'undefined') {
for (var j = 0, countTasks = phase.task.length; j < countTasks; j++) {
task = phase.task[j];
if (task.start < earliest) {
earliest = task.start;
}
if (task.end > latest) {
latest = task.end;
}
}
}
}
return { earliest: earliest, latest: latest };
}
相关文章:
- 查找最短和最长日期
- Mongodb/JS:查找最短(最早)日期
- 如何使用javascript在html中查找日期时间格式
- 在日期列表中查找最早的日期
- 使用JavaScript查找数组中最近的日期
- 查找某个日期范围内的可用天数
- 在javascript中从当前日期查找上一年的日期
- 算法导航:如何查找最近的日期(javascript)
- 在日期范围内查找丢失日期的最有效方法是什么
- XML查询日期范围查找
- 如何使用JavaScript查找数组中的最早日期
- 根据 Javascript 中的日期查找日期
- 如何查找日期之间的持续时间
- MongoDb 在存储为字符串时按日期查找
- 查找 StartDate 和 EndDate 之间的所有日期,在 PHP 或 JavaScript 中间隔一定天数
- 无法使用 getTime() y 查找日期差异
- 如何在文本框中查找两个日期之间的差异
- Javascript - 查找两个 MM-dd-yyyy HH:mm:ss 格式日期之间的秒数
- MongoDB按日期范围查找文档-JavaScript
- Javascript来临日历,查找日期/月份时遇到问题