Javascript 对数字数组排序
为什么这个代码有效Javascript 对数字数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,为什么这个代码有效 <!DOCTYPE html> <html> <body> <p id="demo">Click the button to sort the array.</p> <button onclick="myFunction()">Try it</button> <script> function myFunction() { var points = [40,100,1,
<!DOCTYPE html>
<html>
<body>
<p id="demo">Click the button to sort the array.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
var x = document.getElementById("demo");
x.innerHTML=points;
}
</script>
</body>
</html>
单击按钮对阵列进行排序
试试看
函数myFunction()
{
var点=[40100,1,5,25,10];
sort(函数(a,b){返回a-b});
var x=document.getElementById(“演示”);
x、 innerHTML=点;
}
它是从
我不理解points.sort(函数(a,b){returna-b})代码>部分。您拥有的是可用于自定义排序的Array.prototype.sort
。它根据从该函数返回的值执行排序,如下所示:
- 如果比较函数(a,b)小于0,则将a排序到比b低的索引,即a排在第一位
- 如果compareFunction(a,b)返回0,则保持a和b彼此不变,但根据所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如,至少可以追溯到2003年的Mozilla版本)都遵守这一点
- 如果比较函数(a,b)大于0,则将b排序为比a低的索引
因此,您只需返回两个数字a和b之间的差,这将返回排序比较功能所需的值(即,如果a
,+ve-->如果a>b
或0-->如果a==b
),则返回的值正好是可用于自定义排序的数组.prototype.sort
的值。它根据从该函数返回的值执行排序,如下所示:
- 如果比较函数(a,b)小于0,则将a排序到比b低的索引,即a排在第一位
- 如果compareFunction(a,b)返回0,则保持a和b彼此不变,但根据所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如,至少可以追溯到2003年的Mozilla版本)都遵守这一点
- 如果比较函数(a,b)大于0,则将b排序为比a低的索引
因此,您只是返回两个数字a和b之间的差值,这将返回排序比较函数所需的值(即,如果a,
+ve-->如果a>b
或0-->如果a==b
)。当您将回调函数与sort
方法一起使用时,它决定如何比较数组中的两个项目
如果值相等,则回调函数应返回0。如果第一个参数在第二个参数之前结束,则回调函数应返回负值,否则返回正值
下面是一个具有相同结果的更具描述性的实现:
points.sort(function(a,b){
if (a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
function(a, b) {
if (a > b) return 1;
else if (a < b) return -1;
else return 0;
}
points.sort(函数a、b){
如果(a==b){
返回0;
}否则如果(a
当您使用带有sort
方法的回调函数时,它确定如何比较数组中的两个项
如果值相等,则回调函数应返回0。如果第一个参数在第二个参数之前结束,则回调函数应返回负值,否则返回正值
下面是一个具有相同结果的更具描述性的实现:
points.sort(function(a,b){
if (a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
function(a, b) {
if (a > b) return 1;
else if (a < b) return -1;
else return 0;
}
points.sort(函数a、b){
如果(a==b){
返回0;
}否则如果(a
排序函数将比较器函数作为其参数。比较器功能的工作原理如下:
- 它比较两个值(a和b)
- 如果a>b,则返回正的值
- 如果a=b,则返回0
- 如果a
a-b
履行本合同
例如:如果
a=40
和b=100
,则a-b=-60
。因此,a
排序函数将比较器函数作为其参数。比较器功能的工作原理如下:
- 它比较两个值(a和b)
- 如果a>b,则返回正的值
- 如果a=b,则返回0
- 如果a
a-b
履行本合同
例如:如果
a=40
和b=100
,则a-b=-60
。因此,a
.sort()
允许您传递一个函数来定义数组的排序方式。目标是返回正数(>=0)或负数(.sort()
允许您传递一个函数来定义数组的排序方式。目标是返回正数(>=0)或负数(排序函数的工作原理是查看比较器函数返回的值是负值还是正值。基本上,如果是正值,它交换数字。如果是负值或零,它将按该顺序保留数字。它将继续遍历数组,直到所有对返回非正值
在这种情况下:
points.sort(function(a,b){
if (a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
function(a, b) {
if (a > b) return 1;
else if (a < b) return -1;
else return 0;
}
功能(a、b){
如果(a>b)返回1;
否则如果(a
排序函数通过查看比较器函数返回的值是负数还是正数来工作。基本上,如果是正数,它交换数字。如果是负数或零,它将按顺序保留数字。它将继续遍历数组,直到所有对返回非正数
在这种情况下: