陣列元素的自然排序(帶有數字的字串)
以有意義的方式對包含數字的字串陣列進行排序可能具有挑戰性。按字典順序對它們進行排序通常會導致意想不到的順序。為了實現所需的「自然排序」順序,我們可以使用以下方法:
解決方案:
提供的JavaScript 函數使用名為naturalCompare 的自訂比較函數。它的工作原理如下:
標記字串:
比較循環:
處理不相等的令牌長度:
範例:
這是使用此方法對陣列進行排序的範例:
<br>function naturalCompare(a, b) {<pre class="brush:php;toolbar:false">// 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 說你好"];
arr.sort(naturalCompare);
console.log(arr );
輸出:
[
"IL0 Foo",
"IL3 Bob 打招呼",
"IL0 Foo",
"IL3 Bob 打招呼",
“IL10 Baz”,
以上是提供的 JavaScript 函數如何實現包含數字的字串陣列的自然排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!