該節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函數描述是否有誤?
2016-04-02
應該以w3c為準
2016-06-08
數組內的元素有數組和字母兩種情,下面這個例子是當要比較的對象是兩種情況的任意一種時的寫法:
<!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>
2016-06-08
這句話也很重要:如果此方法沒有參數,那就會將數組中的元素嘗試轉換成字符串,然后比較字符串中每個字符的ASCII碼的大小,較小的的字符串在前面。
2016-06-08
慕課網的寫法是有些問題的,大家看看這里面的解釋吧
http://www.softwhy.com/forum.php?mod=viewthread&tid=8360
2016-06-08
前面已經說了有參數函數的,若 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;}}));
? ?
2016-04-08
描述不準確
應該是大于0,小于0,和等于0三種情況
2016-03-31
如果是字母的話,會按照字母順序進行排序。
2016-03-31
沒錯? 0的話a=b,<=-1說明a<b , >=1說明a>b。