在Javascript中不能将数组按升序排序
Cannot sort array into ascending numeric order in Javascript
我试图在JavaScript中使用.sort()
方法对如下所示的数组进行排序。
var addresses = [
"5 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"51 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"53 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"55 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"57 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"7 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"9 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan"
];
但是,在调用.sort
方法并将数组写入文档之后。数组似乎没有变成升序的数字顺序。
有人能看出我错在哪里吗?
您的数组包含字符串,因此它们将按字母顺序排序,而不是按数字排序。您将需要使用排序函数作为数组的参数。排序并解析门牌号
最后使用下面的代码使其工作:
function naturalCompare(a, b) {
var ax = [], bx = [];
a.replace(/('d+)|('D+)/g, function(_, $1, $2) { ax.push([$1 || Infinity, $2 || ""]) });
b.replace(/('d+)|('D+)/g, function(_, $1, $2) { bx.push([$1 || Infinity, $2 || ""]) });
while(ax.length && bx.length) {
var an = ax.shift();
var bn = bx.shift();
var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);
if(nn) return nn;
}
return ax.length - bx.length;
}
addresses = addresses.sort(naturalCompare);
您可以使用这个排序函数来比较字符串的前几个数字
var addresses = [
"5 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"51 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"53 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"55 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"57 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"7 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"9 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan"
];
addresses.sort(function(a, b){
return +a.split(" ")[0] - +b.split(" ")[0];
});
console.log(addresses);
检查下面的示例
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a-b});
http://www.w3schools.com/jsref/jsref_sort.asp try this
var addresses = [
"5 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"51 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"53 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"55 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"57 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"7 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan",
"9 Glyn Eiddew, , , , Llanbradach, Caerphilly, Mid Glamorgan"
];
addresses.sort(function(a, b){
return a.split(' ')[0] - b.split(' ')[0]
})
相关文章:
- 如何对javascript表进行排序(升序或降序),该表是某些SQL操作表的结果
- 使用JS Blogger API v3,如何按升序对文章进行排序
- 按日期和时间升序对数组进行排序
- 使用Async.js sortBy的升序与降序排序顺序
- 如何按数字升序对对象数组进行排序
- NodeJS时间戳:比较时间并显示记录排序升序
- Javascript - 对包含根据日期升序和降序的对象的嵌套数组进行排序
- 如何在javascript中对数字用逗号分隔的字符串进行排序(按升序)
- Ember计算升序排序
- 解析云中的升序和降序多重排序
- 按升序对数组进行排序
- 按升序对数组进行排序,同时取消重复值
- JavaScript升序排序出现异常
- 使用javascript升序排序Json对象
- Tinytable如何按降序而不是升序排序表
- 如何将输入的3个数字按升序排序
- 我已经在javascript中编写了一个代码来排序逗号分隔的值(数字),并且对于特定的值集,我的升序排序是不工作的
- 按升序排序周数和年份
- 在Javascript中不能将数组按升序排序
- 按升序排序JSON对象