在Javascript中执行不区分大小写的排序并获取TypeError:a.toLowerCase不是一个函数
我有一个数组(myarray),它包含大小写混合的值,范围从a、a、。。。z、 z。 我使用以下机制对其进行排序,不考虑大小写,这意味着所有大写字母应首先排序,然后是小写字母,以便排序后的结果如下所示: Abc,Abd,abs,abp,Back,Bann,bike。。。等等 我是这样做的在Javascript中执行不区分大小写的排序并获取TypeError:a.toLowerCase不是一个函数,javascript,Javascript,我有一个数组(myarray),它包含大小写混合的值,范围从a、a、。。。z、 z。 我使用以下机制对其进行排序,不考虑大小写,这意味着所有大写字母应首先排序,然后是小写字母,以便排序后的结果如下所示: Abc,Abd,abs,abp,Back,Bann,bike。。。等等 我是这样做的 var myarray= new Array(); for (i=0; i<select.options.length; i++) { myarray[i] = new Array(); myarray[
var myarray= new Array();
for (i=0; i<select.options.length; i++) {
myarray[i] = new Array();
myarray[i][0] = select.options[i].text;
myarray[i][1] = select.options[i].value;
}
myarray.sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
var myarray=new Array();
对于(i=0;i您正在对由数组而不是字符串组成的数组进行排序,因此需要指定要用于排序的数组项
我不知道您是想按文本还是按值对数组排序,但假设您想按选项值对其排序:
myarray.sort(function (a, b) {
return a[1].toLowerCase().localeCompare(b[1].toLowerCase());
});
所以,实际上有一个嵌套数组,如
[ ['text1','valie1'],['text2','valie2'],['text2','valie2']]
但是当你使用你的函数时
myarray.sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
a
和b
是类似于['text1','valie1']
的数组,而不是字符串
所以你需要改变你的排序函数
myarray.sort(function (a, b) {
var textCompare = a[0].toLowerCase().localeCompare(b[0].toLowerCase());
var valueCompare =a[1].toLowerCase().localeCompare(b[1].toLowerCase());
return textCompare || valueCompare;
});
此外,在函数中,您可以传递区域设置和选项,如敏感度
,因此您不需要使用来传递小写字母
什么是a
?toLowerCase
是a。您的数组可能包含其他内容。是的,我的数组不仅包含字符串。它还包含一些值和文本。完整的代码发布在我的答案中,请参见下面的内容