Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按字母顺序对Javascript选项值排序_Javascript_Arrays_Sorting_Object - Fatal编程技术网

按字母顺序对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'…
,然后我将使用它进行排序