JavaScript对象排序方法

JavaScript对象排序方法,javascript,arrays,sorting,Javascript,Arrays,Sorting,在比较中,我无法通过比较来理解这个概念。 查看更多详细信息:如果(5>3)返回1;那么这个返回1和返回-1是什么;它是如何工作的,以及它如何影响排序方法。请帮帮我 function compareNumeric(a, b) { if (a > b) return 1; if (a < b) return -1; } var arr = [ 1, 2, 15, 14, 66, 434, 112, 3 ]; arr.sort(compareNumeric); alert(a

在比较中,我无法通过比较来理解这个概念。 查看更多详细信息:如果(5>3)返回1;那么这个返回1和返回-1是什么;它是如何工作的,以及它如何影响排序方法。请帮帮我

function compareNumeric(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
}

var arr = [ 1, 2, 15, 14, 66, 434, 112, 3 ];

arr.sort(compareNumeric);

alert(arr);  // sorted array
函数比较(a,b){
如果(a>b)返回1;
如果(a
会有帮助。基本上,
sort
使用数组中两个条目的不同组合重复调用回调。回调的返回值告诉
sort
1)
a
是否应该在结果中
b
之前(通过返回负值),或者2)
a
是否应该在结果中
b
之后(通过返回正值),或3)
a
b
对于排序目的是等效的,因此不重要(返回0)

您的示例
compareNumeric
有一个错误:如果
a
既不是
也不是
b
,它应该返回
0
,但是它不返回任何内容,因此调用它会导致
未定义的
。相反:

function compareNumeric(a, b) {
    if (a > b) { return 1; }
    if (a < b) { return -1; }
    return 0;
}
如果
a
b
都是数字,那么
a
如果
a
小于
b
,那么在结果中应该在前面,如果
a
大于
b
那么在结果中应该在后面,那么
a-b
将是负数,或
0
如果
a
b
相等

请注意,回调函数被调用的次数以及调用的顺序没有在规范中定义;它只说明
Array#sort
将根据需要调用回调并使用结果信息

让我们看看您的示例中的参数
Array#sort
给出了什么;再次注意,这将取决于实现:

函数比较(a,b){
如果(a>b)返回1;
如果(a
。作为控制台包装器{
最大高度:100%!重要;
}
您可以看看这里:
function compareNumeric(a, b) {
    return a - b;
}