在javascript中使用特殊字符对数字数据进行排序
Sort Aplhanumeric data with special characters in javascript
DATA = ["Ge_total_EN394" , "p1@5end_chr2:191878874..191878938,-" , "p23@5end_chr2:191839657..191839662,-" , "p2@5end_chr2:191878812..191878823,-"]
我想把数据按升序排序。我现在使用的排序函数在
后面function sort(s1, s2) {
var s1lower = s1.toLowerCase();
var s2lower = s2.toLowerCase();
return s1lower > s2lower? 1 : (s1lower < s2lower? -1 : 0);
}
然而,这给了我以下输出
"Ge_total_EN394" , "p1@5end_chr2:191878874..191878938,-" , "p23@5end_chr2:191839657..191839662,-" , "p2@5end_chr2:191878812..191878823,-"
p23位于p2之前,这是不正确的。我不确定如何正确排序数据,以便p2出现在
是否有一段代码只能对字母数字字符进行排序,而忽略任何特殊字符
是的,使用regex替换来删除所有非字母数字字符很容易:
function sort(s1, s2) {
var s1lower = s1.toLowerCase().replace(/[^a-z0-9]/g, "");
var s2lower = s2.toLowerCase().replace(/[^a-z0-9]/g, "");
return s1lower > s2lower? 1 : (s1lower < s2lower? -1 : 0);
}
然而,我不认为简单地忽略"特殊"字符是你真正需要的,因为如果你只保留字母数字字符,你会有:
"p235endchr2191839657191839662" // originally "p23@..."
"p25endchr2191878812191878823" // originally "p2@..."
…因此,p23
项仍然会出现在p2
项之前。
你似乎真正想要的是,如果有一个@
符号,然后按@
之前的部分排序,所以也许像:
function sort(s1, s2) {
var s1lower = s1.toLowerCase().split("@");
var s2lower = s2.toLowerCase().split("@");
if (s1lower[0] > s2lower[0])
return 1;
else if (s1lower[0] < s2lower[0])
return -1;
else
return s1lower[1] > s2lower[1] ? 1 : s1lower[1] < s2lower[1] ? -1 : 0;
}
DATA = ["Ge_total_EN394" , "p1@5end_chr2:191878874..191878938,-" , "p23@5end_chr2:191839657..191839662,-" , "p2@5end_chr2:191878812..191878823,-", "p23@1end_chr2:191878812..191878823,-"];
DATA.sort(sort);
console.log(DATA);
(我将其更改为使用if/else if/else,以使其比使用几个链式三元操作符更具可读性。)
相关文章:
- 对角度数据表中括号内的数字进行排序
- 正则表达式(JavaScript),用于创建数字必须大于x的数据验证
- 数据表rowId以数字问题开头
- Uncaught SyntaxError:尝试读取json数据时出现意外数字
- Ember数据:DS.attr(“数字”)应该如何工作
- 从localStorage检索数字数据
- jquery json 返回添加两个数字的数据
- 显示给定输入数字的数据集中字母表的所有可能组合
- 如何将从数据库中提取的数字传递到javascript数据部分
- 在引导选择组件中的搜索不起作用,其中数据令牌包含所有数字;4730”;
- 如何使用 JavaScript 使自定义数据属性值成为数字
- 角度数据绑定 - 输入类型=“数字”
- 如何根据数字列从 Parse 中对数据数组进行排序
- 如何确保提交的数据是有效的数字对
- Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
- 带数字的数据属性名称
- 如何使程序保留输入的数据(数字)
- 如何在Javascript中的表分类器中对表列数据进行字母数字排序
- 以何种格式记录/存储数字数据以供进一步的JavaScript处理
- 如何使输入字段接受javascript中的字母数字数据