Javascript - 排序数组时忽略引号

Javascript - Ignore Quotes when sorting array

我还没有找到好的解决办法。我在词汇表弹出窗口中使用了一组字符串。字符串是键,用于从对象中检索定义。我需要按字母顺序对数组进行排序,但一些字符串包含引号,排序后最终出现在第一位。

    keys = ['Back Pay', '"Hot Cargo" Agreements', 'Clayton Act', 
    'Fiduciaries', 'Estoppel', ...]  

排序后,我希望列表忽略引号并成为以下内容:

    ['Back Pay', 'Clayton Act', 'Estoppel',
    'Fiduciaries', '"Hot Cargo" Agreements', ...]

但我得到以下信息:

    ['"Hot Cargo" Agreements', 'Back Pay', 'Clayton Act', 'Estoppel',
    'Fiduciaries',  ...]

有没有办法在排序过程中忽略引号而不删除它们?它们是术语的一部分,在词汇表弹出窗口中显示时需要出现。

您可以使用

创建自定义排序函数
myArray.sort(mysortfunction);

然后在你的函数中去掉引号

function mysortfunction(a,b) {
  a = a.replace(/"/g,'');
  b = b.replace(/"/g,'');

  return (a < b ? -1 : 1);
}

这是一个jsfiddle

您可以编写忽略引号的自定义排序函数:

var keys = ['Back Pay', '"Hot Cargo" Agreements', 'Clayton Act', 'Fiduciaries', 'Estoppel'];

function removeQuotes(str) {
  return str.replace(/['"]+/g, '')
}

var sorted = keys.sort(function(a, b) {
  return removeQuotes(a) > removeQuotes(b);
});

console.log(sorted);