如何在javascript排序方法中对数字进行排序

时间:2011-01-02 03:03:59

标签: javascript function sorting

以下是代码:

<script type="text/javascript">

function sortNumber(a,b)
{
return a - b;
}

var n = ["10", "5", "40", "25", "100", "1"];
document.write(n.sort(sortNumber));

</script>

我发现这是w3school,没有解释所有!! sortnumber函数是排序数字的公式吗? 什么意思是a和b以及为什么存在? 为什么n.sort(sortNumber)中的sortNumber没有指定a和b的任何参数?有人能解释一下吗?谢谢!

4 个答案:

答案 0 :(得分:6)

JavaScript sort()函数可能会也可能不会带参数 该参数将是一个函数 - 意思是what function is to be used to assess which of two elements should be before the other

n数组由表示数字的字符串组成 在没有函数的情况下执行简单的sort(),将使用字母顺序:结果将是

 "1", "10", "25"... "5"

并且不正确。

提供一个函数sortNumber告诉sort每次sort算法想知道这两个项中的哪一个在另一个之前时,用数组的两个元素调用该函数

因此sortNumber提供了两个项目,numerical操作返回

  • 负值,意味着 a b 之前
  • 正值, b a
  • 之前
  • 零:它们在顺序方面是相同的(顺序无关紧要)。

答案 1 :(得分:2)

您需要考虑sort()消耗的内容; sort()使用定义sort oder的函数。简化:

array.sort(sortfunc)

因此,当您定义函数sortNumber时,实际上是在定义sort对数组进行排序的方式。

因此,如果我们定义一个函数,将body定义为:

return a - b;

我们要求按升序排序

如果我们用body定义一个函数:

return b - a;

我们要求按降序排序

希望这有帮助

答案 2 :(得分:1)

当您撰写n.sort(sortNumber)时,您将sortNumber 功能传递给sort
您没有调用sortNumber函数,因此您不传递任何参数。

Javascript的sort方法采用可选参数:比较两个元素的函数 sort将调用您传递的函数来比较数组中的元素对 您提供的比较功能应该采用两个参数并返回一个数字,指示哪一个更大。

答案 3 :(得分:0)

sort函数接受2个参数ab,并且应该返回一个数字。

  • 如果a超过b,则应返回任何正数。
  • 如果a小于b,则应返回任何负数。
  • 如果a等于b,那么它应该返回0.

a - b生成该数字。您也可以使用b - a对其进行排序。你明白了。