Javascript VueJS-使下拉列表按字母顺序显示
我正在尝试按字母顺序对列表进行排序,但没有任何成功 我有一个计算属性,它使用Axios提取数据。它删除所有重复项,并在每个逗号处拆分对象数组。这很有效 我尝试了各种方法来尝试和显示A-Z公司的列表。下面的例子 请有人帮忙好吗 数据如下所示: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
"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对!谢谢修好了,非常感谢你们。它工作得很好。当你知道怎么做的时候,这太容易了!