数组元素的自然排序(带有数字的字符串)
以有意义的方式对包含数字的字符串数组进行排序可能具有挑战性。按字典顺序对它们进行排序通常会导致意想不到的顺序。为了实现所需的“自然排序”顺序,我们可以使用以下方法:
解决方案:
提供的 JavaScript 函数使用名为 naturalCompare 的自定义比较函数。它的工作原理如下:
标记字符串:
比较循环:
处理不相等的令牌长度:
示例:
以下是使用此方法对数组进行排序的示例:
< ;pre>
函数naturalCompare(a, b) {
// Tokenization var ax = [], bx = []; a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) }); b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) }); // Comparison while(ax.length && bx.length) { var an = ax.shift(); var bn = bx.shift(); var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]); if(nn) return nn; } // Handling unequal length return ax.length - bx.length;
}
//排序测试数组
let arr = ["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob said你好"];
arr.sort(naturalCompare);
console.log(arr);
输出:
[
“IL0 Foo”,
“IL3 鲍勃说你好",
"IL10 Baz",
"PI0 酒吧"
]
以上是提供的 JavaScript 函数如何实现包含数字的字符串数组的自然排序?的详细内容。更多信息请关注PHP中文网其他相关文章!