Javascript VueJS-使下拉列表按字母顺序显示

Javascript VueJS-使下拉列表按字母顺序显示,javascript,vue.js,Javascript,Vue.js,我正在尝试按字母顺序对列表进行排序,但没有任何成功 我有一个计算属性,它使用Axios提取数据。它删除所有重复项,并在每个逗号处拆分对象数组。这很有效 我尝试了各种方法来尝试和显示A-Z公司的列表。下面的例子 请有人帮忙好吗 数据如下所示: "C": "UK, EU, EEA, UK and Islands, England Wales & Northern Ireland, International, UK, EU, EEA, UK and Island

我正在尝试按字母顺序对列表进行排序,但没有任何成功

我有一个计算属性,它使用Axios提取数据。它删除所有重复项,并在每个逗号处拆分对象数组。这很有效

我尝试了各种方法来尝试和显示A-Z公司的列表。下面的例子

请有人帮忙好吗

数据如下所示:

"C": "UK, EU, EEA, UK and Islands, England Wales & Northern Ireland, International, UK, EU, EEA, UK and Islands,England Wales & Northern Ireland",
computed: {
    nationalities() {
      return this.results.filter((result) => result.metaData.C);
    },

    uniquenationalities() {
      // All unique nationalities in metaC
      const metaGnationalities = this.results
        .filter((result) => result.metaData && result.metaData.C)
        .map((item) => item.metaData.C)
        .filter((nationality, i, arr) => arr.indexOf(nationality) === i);
      // Split multiple nationalities in strings and store in an array
      let nationalities = [];
      metaGnationalities.forEach((item) => {
        const splitArr = item.split(", ");
        nationalities = nationalities.concat(splitArr);
      });
       
       let nationalities2 = [];
      nationalities2.sort(function(a, b) {
        if (a.nationalities2 < b.nationalities2) {
           return -1;
         }
         if (a.nationalities2 > b.nationalities2) {
           return 1;
         }
         return 0;
       });

      // debugger;
      // Filter again for unique nationalities
      return nationalities2.filter(
        (nationality, i, arr) => arr.indexOf(nationality) === i
      );
    },
  },
};
我的计算属性如下:

"C": "UK, EU, EEA, UK and Islands, England Wales & Northern Ireland, International, UK, EU, EEA, UK and Islands,England Wales & Northern Ireland",
computed: {
    nationalities() {
      return this.results.filter((result) => result.metaData.C);
    },

    uniquenationalities() {
      // All unique nationalities in metaC
      const metaGnationalities = this.results
        .filter((result) => result.metaData && result.metaData.C)
        .map((item) => item.metaData.C)
        .filter((nationality, i, arr) => arr.indexOf(nationality) === i);
      // Split multiple nationalities in strings and store in an array
      let nationalities = [];
      metaGnationalities.forEach((item) => {
        const splitArr = item.split(", ");
        nationalities = nationalities.concat(splitArr);
      });
       
       let nationalities2 = [];
      nationalities2.sort(function(a, b) {
        if (a.nationalities2 < b.nationalities2) {
           return -1;
         }
         if (a.nationalities2 > b.nationalities2) {
           return 1;
         }
         return 0;
       });

      // debugger;
      // Filter again for unique nationalities
      return nationalities2.filter(
        (nationality, i, arr) => arr.indexOf(nationality) === i
      );
    },
  },
};
计算:{
国籍(){
返回this.results.filter((result)=>result.metaData.C);
},
唯一性(){
//metaC中所有独特的民族
const metaGnationalities=this.results
.filter((result)=>result.metaData&&result.metaData.C)
.map((项)=>item.metaData.C)
.filter((国籍,i,arr)=>arr.indexOf(国籍)==i);
//在字符串中拆分多个国籍并存储在数组中
让国籍=[];
metaGnationalities.forEach((项)=>{
const splitArr=item.split(“,”);
国籍=国籍。concat(splitArr);
});
让民族性2=[];
国家2.排序(功能(a、b){
如果(a.民族2b.国家2){
返回1;
}
返回0;
});
//调试器;
//再次筛选唯一的国籍
返回2.2过滤器(
(国籍,i,arr)=>arr.indexOf(国籍)==i
);
},
},
};

您当前正在对空数组进行排序(
nationalities2
)。而是对国籍进行排序

该方法对数组中的元素进行就地排序,并返回排序后的数组

以下是如何解决此问题的简化示例:

//假设最后一个逗号有输入错误(后面缺少空格)
const C=“英国、欧盟、欧洲经济区、英国和岛屿、英格兰威尔士和北爱尔兰、国际、英国、欧盟、欧洲经济区、英国和岛屿、英格兰威尔士和北爱尔兰”;
函数唯一性(inputString){
const=inputString.split(“,”);
//不是对“国家2”进行排序,
//排序、筛选和返回“国籍”
归国
.sort()
.过滤器(
(国籍、i、arr)=>
arr.indexOf(国籍)==i
);
}
控制台日志(唯一性(C))
哪些日志:

[
“欧洲经济区”,
“欧盟”,
“国际”,
“英国”,
“英国和岛屿”,
]
修订后的守则全文如下:

计算:{
国籍(){
返回this.results.filter((result)=>result.metaData.C);
},
唯一性(){
//metaC中所有独特的民族
const metaGnationalities=this.results
.filter((result)=>result.metaData&&result.metaData.C)
.map((项)=>item.metaData.C)
.filter((国籍,i,arr)=>arr.indexOf(国籍)==i);
//在字符串中拆分多个国籍并存储在数组中
让国籍=[];
metaGnationalities.forEach((项)=>{
const splitArr=item.split(“,”);
国籍=国籍。concat(splitArr);
});
归国
.sort()
.filter((国籍,i,arr)=>arr.indexOf(国籍)==i);
},
},

注意,正如@JamesWhiteley在评论中所说的,
sort()
没有任何参数,默认情况下会按字母顺序对字符串进行排序,我们不需要自定义排序函数。

。sort()
本身没有任何参数,默认情况下应该按字母顺序对字符串进行排序-不需要自定义排序()@JamesWhiteley对!谢谢修好了,非常感谢你们。它工作得很好。当你知道怎么做的时候,这太容易了!