对顺序不正确的数字进行排序

Sort on numericals giving improper order

本文关键字:排序 数字 顺序 不正确      更新时间:2023-09-26

这是我的代码片段

  $(document).ready(function(){
        var mylist = [ "20","3","100","50"];
        mylist = mylist.sort();
        $("#mydiv").html(mylist.join(""));
    }); 

它在我的div上打印,就像下面一样

100
20
3
50

但是,如果我给出的数据是"二十"、"三"、"五十",请给出正确的顺序。

fifty
hundread
three
twenty

请帮帮我,我缺了什么??

谢谢。

默认的比较方法使用字母顺序。如果你想对数字进行排序,请使用以下方法:

arr.sort(function(a,b) {
    return a - b;
});
默认情况下,

Array.sort()按字母顺序对值进行排序。该方法也可以与一个可选参数一起使用:比较函数

要对数值进行排序,请使用:

var numbers = [4, 2, 5, 10, 3];
numbers.sort(function(a, b) {
    return a - b;
});
// numbers -> [2, 3, 4, 5, 10]

试试这个:

var sortnumerically = function(a,b){
    if (a<b) return -1;
    else if (a>b) return 1; 
    else= return 0;
}
var mylist = [ 20,3,100,50];
mylist = mylist.sort(sortnumerically);
$("#mydiv").html(mylist.join(","));

好的,来解释排序比较函数。简单地说,它接受两个输入a、b:可能来自数组的元素。如果ab返回1(这就是比较器应该做的)。

http://jsfiddle.net/Lmzua/1/

从数组值中删除引号,并使用下面的额外函数获取升序Mylist=Mylist.sort(函数(a,b){return a-b});

您将数字定义为字符串文字,因此js将它们排序为字符串。您需要将其定义为数字文字:[ 20, 3, 100, 50],以便排序按需工作。

相关文章: