按字母顺序对Javascript选项值排序
我有一些类似于以下对象的东西:按字母顺序对Javascript选项值排序,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一些类似于以下对象的东西: EUR:{ 名称:"欧洲",, 国家:{ FR:{ 名称:“法国”, 城市:{} }, DE:{ 名称:“德国”, 城市:{} }, ES:{ 名称:“西班牙”, 城市:{} } } } 我正试图找出一种方法,按照字母顺序对国家进行排序,然后按每个国家的名称进行排序,例如法国、西班牙、德国。我要采取的方法是首先将其拆分成一个数组并重建 我想知道是否有人有任何不同的方法,我错过了他们可以帮助我 我在过去做过类似的事情来给一个对象带来一些秩序: EUR: {
EUR:{
名称:"欧洲",,
国家:{
FR:{
名称:“法国”,
城市:{}
},
DE:{
名称:“德国”,
城市:{}
},
ES:{
名称:“西班牙”,
城市:{}
}
}
}
我正试图找出一种方法,按照字母顺序对国家进行排序,然后按每个国家的名称进行排序,例如法国、西班牙、德国。我要采取的方法是首先将其拆分成一个数组并重建
我想知道是否有人有任何不同的方法,我错过了他们可以帮助我 我在过去做过类似的事情来给一个对象带来一些秩序:
EUR: {
name: 'Europe',
countries: {
FR: {
name: 'France',
cities: {}
},
DE: {
name: 'Germany',
cities: {}
},
ES: {
name: 'Spain',
cities: {}
},
order : ['DE', 'ES', 'FR']
}
}
每个对象将接收一个顺序
键,这是该对象的键数组。然后,当您迭代对象时,可以使用order
键保持顺序。缺点是,您不仅需要维护对象(添加、更新、删除),还需要维护顺序
键
尽管我强烈建议实际创建一个对象数组,而不是嵌套对象,因为对象键没有顺序
EUR: {
name: 'Europe',
countries: [{
name: 'France',
abbr: 'FR',
cities: {}
},{
name: 'Germany',
abbr: 'DE',
cities: {}
},{
name: 'Spain',
abbr: 'ES',
cities: {}
}]
}
然后您可以遍历EUR.countries
数组,并按.name
键或.abbr
键进行排序
编辑:我应该实际显示迭代来对它们进行排序,对吗
var sorted = EUR.countries.sort(function(a, b){
return a.name.toLowerCase() > b.name.toLowerCase();
});
我将名称改为小写,因为排序函数使用Unicode。如果排序顺序错误,只需翻转符号。您将错过一个(或多个)数组进行排序。对象实际上没有顺序。如果顺序对您来说真的很重要,请使用数组。Javascript对象属性实际上没有顺序。Ans:当您将它们拆分为数组并进行排序时,您需要保留数组,如果没有其他原因,只是为了有一种按顺序访问对象的方法的话。您也可以保留对象结构,但永远不会有任何可靠的排序。是的,
国家
可能应该定义为国家:[{FR:{name:'France'…
,然后我将使用它进行排序