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)
哦。显然这是。显然是这样。顺序可以是“默认”或“排序函数中的任何程序”。“数字”或“升序/降序”没有特殊设置。顺序可以是“默认”或“排序函数中的任何程序”。“数字”或“升序/降序”没有特殊设置。