javascript中带引号的数组排序
我有一个数组javascript中带引号的数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个数组 var arr = ['hello','"end" two', 'end one', 'yes', 'abc' ]; 我需要按如下所示对其进行排序 // abc, end one, "end" two, hello, yes 我该怎么办?您可以使用 忽略标点符号 是否应该忽略标点符号。可能的值为true和false;默认值为false var数组=['hello','end'two','end'one','yes','abc']; array.sort(函数(a,b){ 返
var arr = ['hello','"end" two', 'end one', 'yes', 'abc' ];
我需要按如下所示对其进行排序
// abc, end one, "end" two, hello, yes
我该怎么办?您可以使用
忽略标点符号
是否应该忽略标点符号。可能的值为true
和false
;默认值为false
var数组=['hello','end'two','end'one','yes','abc'];
array.sort(函数(a,b){
返回a.localeCompare(b,未定义,{ignoresparcing:true});
});
console.log(数组)代码>
函数排序(a,b){
a=a.替换(/“/g”);
b=b.替换(/“/g,”);
回报率(a警报(已排序)代码>接受的答案将在每次比较中删除引号,如果有许多项目,这可能是一个问题。相反,创建用于排序的并行值数组:
const sortValues = arr.map(elt => elt.replace(/"/g, ''));
现在,根据这些值对从0开始的数字列表进行排序:
const sortIndexes = arr.map((_, i) => i)
.sort((a, b) => sortValues[a].localeCompare(sortValues[b]));
然后根据排序后的索引对输入数组重新排序:
const result = sortIndexes.map(i => arr[i]);
函数排序(一、二){
一=一。替换(/“/g,”);
二=二。替换(/“/g,”);
返回值(一小于二?-1:1);
}
keys=['hello','end'two','end'one','yes','abc']
var sorted=keys.sort(sortarray);
警报(已排序)代码>“结束”2不能在您更改订单时出现在“结束”1之前。@NinaScholz是否返回-1
或1
?我认为如果在相等的情况下不返回0
,也不会影响排序。当然,localeCompare
更好。@torazaburo,对,它不返回零。1和-1被用作比较标志,因为逆序&给出逆序结果。太棒了,你每天都能学到新东西。