在JavaScript中使用排序方法时是否应该检查数组长度?

在JavaScript中使用排序方法时是否应该检查数组长度?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我对JavaScript中的array.sort方法有一个问题。数组中的值集可以从1变化到更多。如果有多个元素,Sort函数应该按顺序对它们进行排序。这是我的密码: var myDates = ["03/05/2017","02/01/2017","03/02/2017"]; myDates.sort(function(a,b) { a = a.split('/').reverse().join(''); b = b.split('/').reverse().join('');

我对JavaScript中的array.sort方法有一个问题。数组中的值集可以从1变化到更多。如果有多个元素,Sort函数应该按顺序对它们进行排序。这是我的密码:

var myDates = ["03/05/2017","02/01/2017","03/02/2017"];

myDates.sort(function(a,b) {
    a = a.split('/').reverse().join('');
    b = b.split('/').reverse().join('');
    return a > b ? 1 : a < b ? -1 : 0;
});

上面的代码工作正常,所有日期都已排序。我的问题是在运行sort方法之前是否应该检查数组的长度?我这样问是因为我的数组在某些情况下只能有一个元素。到目前为止,当我只使用一个元素进行测试时,我的代码没有抛出任何错误,但是我想知道在运行排序之前是否应该检查数组的长度,或者JavaScript已经处理了这个问题?如果有人知道答案,请告诉我。谢谢。

此行为记录在Array.prototype.sort规范中。看

具体而言:

SortCompare调用的参数是以前调用[[Get]]内部方法返回的值,除非根据HasOwnProperty,以前调用访问的属性不存在。如果SortCompare的两个透视参数都对应于不存在的属性,请使用+0而不是调用SortCompare。如果只有第一个透视参数不存在,请使用+1。如果只有第二个透视参数不存在,则使用−一,

简言之:

Array.prototype.sortundefined,undefined=>{…};//=>0

Array.prototype.sortunedefined,b=>{…};//=>一,


Array.prototype.sorta,未定义=>{…};//=>-1

嗯。。。自己检查发生了什么,对于0和1元素提示,在回调中放一个console.log,这将如何帮助我获得答案?我知道如果我有多个元素,我的函数会产生什么,但是我想知道如果我有少于两个元素,我是否应该阻止我的函数运行。。。如果少于2个元素,甚至不会调用排序回调-因此,不需要检查长度。老实说,我只是认为您可能想学习如何学习我尝试过,但console.log在回调函数中没有产生任何输出。谢谢你的解释。不,这是相关的。如果SortCompare的两个透视参数都对应于不存在的属性,请使用+0而不是调用SortCompare…对不起,我明白你的意思-你的代码使用了未定义,这让我很困惑-将删除我的评论:p