2016-04-27 75 views
1

我正在使用node.js.我想解决这阵由他们的名字,它具有以下格式:如何按字母顺序排列我的数组?

[["Kingston upon Thames",36.9],["Croydon",36.8],["Bromley",40.1],["Hounslow",35.4],["Ealing",35.9],["Havering",40.3],["Hillingdon",36.2],["Harrow",37.9],["Brent",35.4],["Barnet",37.1],["Lambeth",34.2],["Southwark",34.1],["Lewisham",34.8],["Greenwich",34.9],["Bexley",38.9],["Enfield",36.1],["Waltham Forest",34.7],["Redbridge",35.7],["Sutton",38.6],["Richmond upon Thames",38.5],["Merton",36.4],["Wandsworth",34.8],["Hammersmith and Fulham",35.4],["Kensington and Chelsea",38.9],["Westminster",37.4],["Camden",36],["Tower Hamlets",31.2],["Islington",34.6],["Hackney",32.8],["Haringey",34.8],["Newham",31.7],["Barking and Dagenham",32.9],["City of London",41.9]] 

我要像[“巴金和达格南”,32.9],[“巴尼特”,37.1],[“贝克斯利排序呢“,38.9]等

+0

[网站:stackoverflow.com的JavaScript字符串数组的数组排序(https://www.google.com/search?q=site%3Astackoverflow.com+javascript + sort + arrays + of + strings + gws_rd = ssl) – 2016-04-27 15:01:07

回答

4

只要把你喜欢应用排序的元素。

array.sort(function (a, b) { 
    return a[0].localeCompare(b[0]); 
}); 

工作例如:

var array = [["Kingston upon Thames",36.9],["Croydon",36.8],["Bromley",40.1],["Hounslow",35.4],["Ealing",35.9],["Havering",40.3],["Hillingdon",36.2],["Harrow",37.9],["Brent",35.4],["Barnet",37.1],["Lambeth",34.2],["Southwark",34.1],["Lewisham",34.8],["Greenwich",34.9],["Bexley",38.9],["Enfield",36.1],["Waltham Forest",34.7],["Redbridge",35.7],["Sutton",38.6],["Richmond upon Thames",38.5],["Merton",36.4],["Wandsworth",34.8],["Hammersmith and Fulham",35.4],["Kensington and Chelsea",38.9],["Westminster",37.4],["Camden",36],["Tower Hamlets",31.2],["Islington",34.6],["Hackney",32.8],["Haringey",34.8],["Newham",31.7],["Barking and Dagenham",32.9],["City of London",41.9]]; 
 

 
array.sort(function (a, b) { 
 
    return a[0].localeCompare(b[0]); 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

+0

这是说错误'return a [0] .localeCompare(b [0]);'不是函数。我忘了提及我正在使用node.js – Luffydude

+1

@Luffydude在node.js中它工作正常 – isvforall

1

使用Array.prototype.sort()

a = [["Kingston upon Thames",36.9],["Croydon",36.8],["Bromley",40.1],["Hounslow",35.4],["Ealing",35.9],["Havering",40.3],["Hillingdon",36.2],["Harrow",37.9],["Brent",35.4],["Barnet",37.1],["Lambeth",34.2],["Southwark",34.1],["Lewisham",34.8],["Greenwich",34.9],["Bexley",38.9],["Enfield",36.1],["Waltham Forest",34.7],["Redbridge",35.7],["Sutton",38.6],["Richmond upon Thames",38.5],["Merton",36.4],["Wandsworth",34.8],["Hammersmith and Fulham",35.4],["Kensington and Chelsea",38.9],["Westminster",37.4],["Camden",36],["Tower Hamlets",31.2],["Islington",34.6],["Hackney",32.8],["Haringey",34.8],["Newham",31.7],["Barking and Dagenham",32.9],["City of London",41.9]]; 
 
a.sort(function(a, b){ 
 
    var aName = a[0].toLowerCase(); 
 
    var bName = b[0].toLowerCase(); 
 
    return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0)); 
 
}); 
 
console.log(a);

1

这种方式效率不高,但它会成为你的目的。

var myArray =[["Kingston upon Thames",36.9],["Croydon",36.8],["Bromley",40.1],["Hounslow",35.4],["Ealing",35.9],["Havering",40.3],["Hillingdon",36.2],["Harrow",37.9],["Brent",35.4],["Barnet",37.1],["Lambeth",34.2],["Southwark",34.1],["Lewisham",34.8],["Greenwich",34.9],["Bexley",38.9],["Enfield",36.1],["Waltham Forest",34.7],["Redbridge",35.7],["Sutton",38.6],["Richmond upon Thames",38.5],["Merton",36.4],["Wandsworth",34.8],["Hammersmith and Fulham",35.4],["Kensington and Chelsea",38.9],["Westminster",37.4],["Camden",36],["Tower Hamlets",31.2],["Islington",34.6],["Hackney",32.8],["Haringey",34.8],["Newham",31.7],["Barking and Dagenham",32.9],["City of London",41.9]] 

// Convert array of arrays to single json object 
var _tempArray = []; 
for(var i =0;i<myArray.length;i++){ 
_tempArray.push({ 
    "name":myArray[i][0], 
    "val":myArray[i][1] 
    }) 
} 

//sort it 
var sortedArray = _tempArray.sort(function(a,b){ 
    return a.name >b.name?1:-1 
}) 
console.log(sortedArray); 

jsfiddle的工作模型