javascript数组方法sort返回大于50的120

javascript数组方法sort返回大于50的120,javascript,Javascript,下面的代码将数组中的整数排序错误,结果为:1,10100,30,40,50,80 var arr = new Array(); arr = [50,100,30,40,80,10,1]; var z = arr.sort(); console.error(z); 这是因为它将它们排序为字符串而不是数字。从: 如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序。例如,“香蕉”在“樱桃”之前。在数字排序中,9位于80之前,

下面的代码将数组中的整数排序错误,结果为:1,10100,30,40,50,80

var arr = new Array();

arr = [50,100,30,40,80,10,1];

var z = arr.sort();

console.error(z);

这是因为它将它们排序为字符串而不是数字。从:

如果未提供
compareFunction
,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序。例如,“香蕉”在“樱桃”之前。在数字排序中,9位于80之前,但由于数字转换为字符串,所以在Unicode顺序中,“80”位于“9”之前

您需要做的是给它一个回调,将它们按数字排序:

arr.sort(function(a, b){
    return a - b;
});

这是因为它将它们排序为字符串而不是数字。从:

如果未提供
compareFunction
,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序。例如,“香蕉”在“樱桃”之前。在数字排序中,9位于80之前,但由于数字转换为字符串,所以在Unicode顺序中,“80”位于“9”之前

您需要做的是给它一个回调,将它们按数字排序:

arr.sort(function(a, b){
    return a - b;
});
根据的文档,“默认排序顺序是根据字符串Unicode代码点。”这将为您提供词汇排序,而您通常不希望对数字进行这种排序

具体而言,的定义了普通排序函数,步骤5和7将参数显式转换为字符串:

  • xString
    成为字符串(
    x
  • ReturnIfAbrupt(
    xString
  • yString
    设置为字符串(
    y
  • ReturnIfAbrupt(
    yString
  • 如果
    xString
    ,则返回−一,
  • 如果
    xString>yString
    ,则返回1
  • 返回+0
  • 您应该提供自己的排序函数,该函数不将值视为字符串,如:

    var arr=new Array();
    arr=[50,100,30,40,80,10,1];
    var z=arr.sort(函数(a,b){
    如果(a根据的文档,“默认排序顺序是根据字符串Unicode代码点。”这将为您提供词汇排序,而您通常不希望对数字进行这种排序

    具体而言,的定义了普通排序函数,步骤5和7将参数显式转换为字符串:

  • xString
    成为字符串(
    x
  • ReturnIfAbrupt(
    xString
  • yString
    设置为字符串(
    y
  • ReturnIfAbrupt(
    yString
  • 如果
    xString
    ,则返回−一,
  • 如果
    xString>yString
    ,则返回1
  • 返回+0
  • 您应该提供自己的排序函数,该函数不将值视为字符串,如:

    var arr=new Array();
    arr=[50,100,30,40,80,10,1];
    var z=arr.sort(函数(a,b){
    如果(a
    方法对数组的项进行排序

    排序顺序可以是字母或数字,也可以是升序(向上)或降序(向下)

    默认情况下,sort()方法按字母顺序和升序将值排序为字符串

    这适用于字符串
    (“苹果”在“香蕉”之前”)
    。但是,如果数字按字符串排序,“25”大于“100”,因为“2”大于“1”

    因此,排序数字时,sort()方法将产生不正确的结果

    您可以通过提供“比较函数”来解决此问题:
    array.sort(比较函数)

    排序()方法对数组中的项进行排序

    排序顺序可以是字母或数字,也可以是升序(向上)或降序(向下)

    默认情况下,sort()方法按字母顺序和升序将值排序为字符串

    这适用于字符串
    (“苹果”在“香蕉”之前”)
    。但是,如果数字按字符串排序,“25”大于“100”,因为“2”大于“1”

    因此,排序数字时,sort()方法将产生不正确的结果

    您可以通过提供“比较函数”来解决此问题:
    array.sort(比较函数)


    我知道这是违反直觉的,但它将数据从A排序到Z。
    var arr=[50100,30,40,80,10,1];sort(函数(a,b){返回a-b;});控制台日志(arr)
    ()PROTIP:不要使用
    newarray()
    ,只需执行
    var arr=[50100,30,40,80,10,1]。我知道这是违反直觉的,但它将数据从A到Z排序为。
    var arr=[50100,30,40,80,10,1];sort(函数(a,b){返回a-b;});控制台日志(arr)
    ()PROTIP:不要使用
    newarray()
    ,只需执行
    var arr=[50100,30,40,80,10,1]