为了账号安全,请及时绑定邮箱和手机立即绑定

该节sort函数描述是否有错?

该节描述说sort函数返回值是以-1和1作为分界点判断A,B是否需要交换位置。可是示例代码中的return a - b; 显然是根据0作为分界点。

然后查了w3school发现以下描述:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。

http://www.w3school.com.cn/jsref/jsref_sort.asp

所以该节sort函数描述是否有误?

正在回答

8 回答

应该以w3c为准

0 回复 有任何疑惑可以回复我~

数组内的元素有数组和字母两种情,下面这个例子是当要比较的对象是两种情况的任意一种时的写法:


<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

<script>

function compare(a,b){

//升序

/*if(a>b){

return 1;

}

if(a==b){

return 0;

}

if(a<b){

return -1;

}*/

//降序

if(a<b){

return 1;

}

if(a==b){

return 0;

}

if(a>b){

return -1;

}

}

var myArra1=new Array(10,2,3,4,5,6,7,8,9,1);

var myArra2=["g","d","e","h","q","b","c","a","A","D","F"];

var myArra3=["g","d","DB","e","DA","h","AA","q","b","c","a","AB","D","F"];

document.write(myArra1.sort(compare) + "<br/>"); 

document.write(myArra2.sort(compare) + "<br/>"); 

document.write(myArra3.sort(compare) + "<br/>"); 

</script>


</head>


<body>


</body>

</html>


0 回复 有任何疑惑可以回复我~

这句话也很重要:如果此方法没有参数,那就会将数组中的元素尝试转换成字符串,然后比较字符串中每个字符的ASCII码的大小,较小的的字符串在前面。

0 回复 有任何疑惑可以回复我~

慕课网的写法是有些问题的,大家看看这里面的解释吧

http://www.softwhy.com/forum.php?mod=viewthread&tid=8360

0 回复 有任何疑惑可以回复我~

前面已经说了有参数函数的,若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。如果你直接对字符进行运算符运算,会返回什么结果? NaN.所以不符合结果。这样排序就没有什么用。
所以说要根据sort函数的返回值进行改写.

[JavaScript] 纯文本查看 复制代码运行代码

console.log(["g","d","e","h","q","b","c","a","A","D","F"].sort(function(a,b){if(a>b){return 1;}if(a==b){return 0;}if(a<b){return -1;}}));

   


0 回复 有任何疑惑可以回复我~

描述不准确

应该是大于0,小于0,和等于0三种情况

0 回复 有任何疑惑可以回复我~

如果是字母的话,会按照字母顺序进行排序。

0 回复 有任何疑惑可以回复我~
#1

Maxmengt 提问者

不好意思,这好像跟我问的没什么关系。
2016-03-31 回复 有任何疑惑可以回复我~
#2

慕UI9843876 回复 Maxmengt 提问者

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。如果你直接对字符进行运算符运算,会返回什么结果? NaN.所以不符合结果。这样排序就没有什么用。
2016-06-08 回复 有任何疑惑可以回复我~

没错  0的话a=b,<=-1说明a<b , >=1说明a>b。

0 回复 有任何疑惑可以回复我~
#1

Maxmengt 提问者

这是建立在a,b都为整数的情况吧。
2016-03-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

该节sort函数描述是否有错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信