Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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 - Fatal编程技术网

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被用作比较标志,因为逆序&给出逆序结果。太棒了,你每天都能学到新东西。