Javascript - 排序数组时忽略引号
Posted
技术标签:
【中文标题】Javascript - 排序数组时忽略引号【英文标题】:Javascript - Ignore Quotes when sorting array 【发布时间】:2015-07-31 13:40:19 【问题描述】:我还没有找到一个好的解决方案。我有一个词汇表弹出中使用的字符串数组。字符串是键,用于从对象中检索定义。我需要按字母顺序对数组进行排序,但某些字符串包含引号并最终在排序时首先出现。
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', ...]
有没有办法在排序过程中忽略引号而不剥离它们?它们是术语的一部分,在弹出词汇表中显示它们时需要存在。
【问题讨论】:
你可以写自己的sort function并按你的意愿排序 【参考方案1】:您可以使用
创建自定义排序功能myArray.sort(mysortfunction);
然后在你的函数中去掉引号
function mysortfunction(a,b)
a = a.replace(/"/g,'');
b = b.replace(/"/g,'');
return (a < b ? -1 : 1);
这是jsfiddle。
【讨论】:
如果没记错的话,compareFunction应该返回0,大于0或者小于0 i> 而不是 bool 值 更简单:return a > b;
【参考方案2】:
您可以编写一个忽略引号的自定义排序函数:
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);
【讨论】:
以上是关于Javascript - 排序数组时忽略引号的主要内容,如果未能解决你的问题,请参考以下文章
使用逗号拆分字符串,但忽略双引号内的逗号 - javascript