Javascript 为什么对数字输入进行字母排序?

Javascript 为什么对数字输入进行字母排序?,javascript,string,sorting,Javascript,String,Sorting,为什么此函数返回的元素按字母顺序排序而不是按数字排序?无论使用Number还是ParseFloat,我都会得到相同的结果 function sortMe() { var x = ["1.0","2.5", "11.0"]; var y = x.map(Number); Logger.log(y.sort()); } 结果:1,11,2.5因为按字母顺序排序,所以'11'在'2'之前 方法对数组的元素进行排序并返回数组。不一定是这样。默认排序顺序根据字符串Unicode代码点 要解决

为什么此函数返回的元素按字母顺序排序而不是按数字排序?无论使用
Number
还是
ParseFloat
,我都会得到相同的结果

function sortMe() {
  var x = ["1.0","2.5", "11.0"];
  var y = x.map(Number);
  Logger.log(y.sort());
}
结果:
1,11,2.5
因为按字母顺序排序,所以
'11'
'2'
之前

方法对数组的元素进行排序并返回数组。不一定是这样。默认排序顺序根据字符串Unicode代码点

要解决这个问题,可以使用带有回调的数字排序,如

array.sort(function (a, b) {
    return a - b;
});
因为按字母顺序排序,所以
'11'
'2'
之前

方法对数组的元素进行排序并返回数组。不一定是这样。默认排序顺序根据字符串Unicode代码点

要解决这个问题,可以使用带有回调的数字排序,如

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

这是因为默认的排序顺序是根据字符串Unicode代码点,而不管您的输入是什么。您的
编号将隐式转换回字符串,然后进行排序。

这是因为默认的排序顺序是根据字符串Unicode代码点,而不管您的输入是什么。您的
编号将隐式转换回字符串,然后进行排序。

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

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

默认情况下,sort()方法根据每个元素的点值按字母顺序和升序对值进行字符串排序

看看这个例子:

var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']

var scores = [1, 10, 21, 2]; 
scores.sort(); // [1, 10, 2, 21]
// Note that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.

var things = ['word', 'Word', '1 Word', '2 Words'];
things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// In Unicode, numbers come before upper case letters,
// which come before lower case letters.
该方法对数组的项进行排序

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

默认情况下,sort()方法根据每个元素的点值按字母顺序和升序对值进行字符串排序

看看这个例子:

var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']

var scores = [1, 10, 21, 2]; 
scores.sort(); // [1, 10, 2, 21]
// Note that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.

var things = ['word', 'Word', '1 Word', '2 Words'];
things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// In Unicode, numbers come before upper case letters,
// which come before lower case letters.

这并不是说你不能传递一个数字数组,无论你传递什么
array#sort
都会尝试根据它们的unicode表示进行比较。而是传递一个比较器,在排序时比较您想要比较的方式

y.sort((a,b)=>a-b)

这并不是说你不能传递一个数字数组,无论你传递什么
array#sort
都会尝试根据它们的unicode表示进行比较。而是传递一个比较器,在排序时比较您想要比较的方式

y.sort((a,b)=>a-b)
哦。显然这是。显然是这样。顺序可以是“默认”或“排序函数中的任何程序”。“数字”或“升序/降序”没有特殊设置。顺序可以是“默认”或“排序函数中的任何程序”。“数字”或“升序/降序”没有特殊设置。