如何按字母顺序对数组进行排序?

时间:2016-04-27 14:56:35

标签: javascript arrays json node.js

我正在使用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]]

我想把它排序为[" Barking和Dagenham",32.9],[" Barnet",37.1],[" Bexley",38.9],等

3 个答案:

答案 0 :(得分: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>');
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用Array.prototype.sort()

&#13;
&#13;
Template.registerHelper('functionToCall', function () {
    // Code here
});
&#13;
&#13;
&#13;

答案 2 :(得分: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