jQuery - 按升序排序数组

时间:2015-06-19 03:33:48

标签: jquery

我需要对nrArray数组进行排序:

var nrArray = nrArray.sort();

以上是做什么的:

[“1”,“17”,“206”,“22”,“3”,“6”]

我需要这个:

[“1”,“3”,“6”,“17”,“22”,“206”]

4 个答案:

答案 0 :(得分:5)

这是因为默认情况下sort()方法会进行基于字符串的比较

  

compareFunction
可选。指定定义的函数   排序。如果省略,则根据每个数组对数组进行排序   根据字符串,字符的Unicode代码点值   转换每个元素。



var nrArray = ["22", "17", "8", "206", "1", "3", "6"];

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

console.log(nrArray)




答案 1 :(得分:3)

传递比较回调并使用{/ 1}}

parseInt

<强>更新

您实际上不需要var arr = ["1", "17", "206", "22", "3", "6"]; arr.sort(function(a, b){ return parseInt(a)- parseInt(b); }); console.log(arr);,因为parseInt会自动转换为数字。这是因为您正在减去并且javascript执行必要的类型转换。但是,a/b不能说同样的,因为这是字符串连接。

答案 2 :(得分:1)

从SO中应用:Sort Array Elements (string with numbers), natural sort

你需要一种自然的排序。一个很好的通用自然排序,提供排序的比较,如果字符串也包含字母也可以使用:

#include <stdlib.h>
int main(void) {
  size_t max = 1000;
  int *a = malloc((max+1) * sizeof *a);
  if (a) {
    for (size_t i = 0; i <= max; i++) a[i] = i;
    free(a);
  }
  return 0;
}

答案 3 :(得分:-1)

是的,因为你创建的字符串数组不是数字。  [1,17,206,22,3,6]应该可以正常工作。而且无需编写

var nrArray = nrArray.sort();

nrArray.sort();更改原始数组本身