我试图排序包含在XXX1,XXX2,XXX3的形式元素的数组。 Array.sort()方法正常工作,直到xxx9,并且如果名称为xxx10或xxx11的元素失败。顺序为xxx1,xxx10,xxx11,xxx2等等。请让我知道如何解决这个问题。
2
A
回答
0
目前你的数组按字母顺序排序,这就是为什么你会得到这些结果。您需要提供自己的比较器功能来实现数字排序。
尝试
var arr = ["xxx1","xxx10","xxx2","xxx20","xxx3","xxx30"];
var sortedArr = arr.sort(function(a, b) {
// remove first 3 characters so remaining string will parse
a = parseInt(a.substr(3));
b = parseInt(b.substr(3));
return a - b;
});
console.log(sortedArr); // => ["xxx1", "xxx2", "xxx3", "xxx10", "xxx20", "xxx30"]
3
您正在看到自然字符串排序的结果。如果字符串排序不是你想要的,你应该使用你自己的比较器。
做这样的事情:
arrayToBeSorted.sort(function(first,second)
{
/* some code that compares 'first' with 'second' and returns <0, ==0, >0*/
});
0
在this后如何实现自然排序看看。
Array.prototype.alphanumSort = function(caseInsensitive) {
for (var z = 0, t; t = this[z]; z++) {
this[z] = [];
var x = 0, y = -1, n = 0, i, j;
while (i = (j = t.charAt(x++)).charCodeAt(0)) {
var m = (i == 46 || (i >=48 && i <= 57));
if (m !== n) {
this[z][++y] = "";
n = m;
}
this[z][y] += j;
}
}
this.sort(function(a, b) {
for (var x = 0, aa, bb; (aa = a[x]) && (bb = b[x]); x++) {
if (caseInsensitive) {
aa = aa.toLowerCase();
bb = bb.toLowerCase();
}
if (aa !== bb) {
var c = Number(aa), d = Number(bb);
if (c == aa && d == bb) {
return c - d;
} else return (aa > bb) ? 1 : -1;
}
}
return a.length - b.length;
});
for (var z = 0; z < this.length; z++)
this[z] = this[z].join("");
}
0
可以实现自定义的回调整理状态,以进入Array.sort()
:
var arr = [],
re = /^\D*(\d+)$/;
for(var i = 20; i-- > 0;) {
arr.push('xxx' + i);
}
function comparator(a, b) {
var numA = a.match(re)[1],
numB = b.match(re)[1];
return numA - numB;
}
arr.sort(comparator);
console.log(arr);
相关问题
- 1. 排序JavaScript数组
- 2. javascript数组排序?
- 3. javascript排序数组
- 4. javascript数组排序
- 5. JavaScript的排序数组双排序
- 6. Javascript-关联数组排序
- 7. 重新排序JavaScript数组
- 8. JavaScript - 撤销数组排序
- 9. JavaScript自动排序数组?
- 10. JavaScript数组排序()索引
- 11. Javascript数组排序问题
- 12. 日期排序javascript数组
- 13. 2D Javascript数组排序
- 14. 数组排序以JavaScript
- 15. 使用Javascript - 数组排序
- 16. JavaScript:数组排序优化
- 17. Javascript /排序对象数组
- 18. 排序二维Javascript数组
- 19. Javascript多维数组排序
- 20. 排序一个Javascript数组
- 21. 排序2D javascript数组
- 22. Javascript按子数组排序数组
- 23. 基于数值的Javascript数组排序基于数值的数组排序
- 24. 在javascript中对多维数组排序
- 25. 我要排序3维数组在javascript
- 26. 在javascript中排序并行数组
- 27. 按Javascript数组中排序的次数(count)排序
- 28. 在javascript对象数组中进行排序和排序
- 29. 的JavaScript数组排序2个性能
- 30. 排序的Javascript对象数组
显示一些代码... – Lloyd
这是预期的行为。寻找一个自然的排序实现。 –
向我们显示代码。 – Thalaivar