以下是代码:
<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的任何参数?有人能解释一下吗?谢谢!
答案 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
操作返回
答案 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个参数a
和b
,并且应该返回一个数字。
a
超过b
,则应返回任何正数。a
小于b
,则应返回任何负数。a
等于b
,那么它应该返回0. 并a
- b
生成该数字。您也可以使用b
- a
对其进行排序。你明白了。