Javascript 从1970年之前的日期数组中获取最高日期

Javascript 从1970年之前的日期数组中获取最高日期,javascript,function,sorting,date,Javascript,Function,Sorting,Date,为什么我的代码不起作用?我想,有一次我在日期上使用了getTime(),而不是尝试比较日期,它会起作用,但事实并非如此。请帮忙。我也意识到,现在这个例子可以是平等的,但对于我的实际项目,它可以是,所以请不要免除任何答案。多谢各位 var x=新日期(1960,07,16); 变量y=新日期(1950年4月28日); var z=新日期(1940,01,07); 变量playerData=[ {name:“John”,日期:x.getTime()}, {name:“Bill”,日期:y.getT

为什么我的代码不起作用?我想,有一次我在日期上使用了getTime(),而不是尝试比较日期,它会起作用,但事实并非如此。请帮忙。我也意识到,现在这个例子可以是平等的,但对于我的实际项目,它可以是,所以请不要免除任何答案。多谢各位

var x=新日期(1960,07,16);
变量y=新日期(1950年4月28日);
var z=新日期(1940,01,07);
变量playerData=[
{name:“John”,日期:x.getTime()},
{name:“Bill”,日期:y.getTime()},
{name:“Greg”,日期:z.getTime()},
];
函数findHighScore(){
var highDateSoFar=null;
var结果;
对于(变量i=0;ihighDateSoFar){
结果=播放数据[i];
highDateSoFar=playerData[i]。日期;
}
else如果(playerData[i].date==highDateSoFar){
结果='相等';
}
}
返回结果;
}
var highPlayer=findHighScore();
var highPlayerName=highPlayer.name;
var highPlayerDate=highPlayer.date;
var highPlayerIndex=playerData.indexOf(highPlayer);

log({highPlayer})您的问题是将
highDateSoFar
初始化为
null
。当您将大于与null进行比较时,您将不会得到所需的结果。将init更改为
var highDateSoFar=-Number.MAX\u VALUE
。这将以可能的最低值开始,因此第一次比较肯定是正确的

var x=新日期(1960,07,16);
变量y=新日期(1950年4月28日);
var z=新日期(1940,01,07);
变量playerData=[
{name:“John”,日期:x.getTime()},
{name:“Bill”,日期:y.getTime()},
{name:“Greg”,日期:z.getTime()},
];
函数findHighScore(){
var highDateSoFar=-Number.MAX_值;
var结果;
对于(变量i=0;ihighDateSoFar){
结果=播放数据[i];
highDateSoFar=playerData[i]。日期;
}
else如果(playerData[i].date==highDateSoFar){
结果='相等';
}
}
返回结果;
}
var highPlayer=findHighScore();
var highPlayerName=highPlayer.name;
var highPlayerDate=highPlayer.date;
var highPlayerIndex=playerData.indexOf(highPlayer);

log({highPlayer})谢谢,这很有效。顺便说一句,我忘了包括你知道我怎么做吗?如果两个或两个以上的日期相等,它将返回所有具有相同日期的玩家的对象?使用数组。如果比较值等于高值,则将其推送到数组中。如果其较大,则创建一个新数组,其中仅包含该数组。“这将以尽可能低的值开始”,除了
-Infinity
,该值也较少键入。:-)@罗布:谢谢你的提示。请注意,使用
无限
是否有性能差异?