首頁 web前端 js教程 提供的 JavaScript 函數如何實現包含數字的字串陣列的自然排序?

提供的 JavaScript 函數如何實現包含數字的字串陣列的自然排序?

Nov 11, 2024 pm 09:11 PM

How does the provided JavaScript function implement natural sorting of an array of strings containing numbers?

陣列元素的自然排序(帶有數字的字串)

以有意義的方式對包含數字的字串陣列進行排序可能具有挑戰性。按字典順序對它們進行排序通常會導致意想不到的順序。為了實現所需的「自然排序」順序,我們可以使用以下方法:

解決方案:

提供的JavaScript 函數使用名為naturalCompare 的自訂比較函數。它的工作原理如下:

  1. 標記字串:

    • 此函數對輸入字串進行標記,將數字與字符分開。令牌成對儲存在陣列中,其中第一個元素是數字(如果沒有數字則為無限大),第二個元素是非數字字元。
  2. 比較循環:

    • 它進入一個循環,迭代兩個輸入字串的標記。
    • 在每次迭代中,它比較第一個元素(數字) 或標記對的第二個元素(字元)。
    • 如果其中一個較大,則函數會傳回比較結果(a 為正,b 為負)。如果相等,則繼續到下一對。
  3. 處理不相等的令牌長度:

    • 如果有仍然是標記數組之一的元素,則將它們的長度差異作為比較結果傳回。

範例:

這是使用此方法對陣列進行排序的範例:

<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 &amp;amp;&amp;amp; 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”,

“PI0 酒吧”]

以上是提供的 JavaScript 函數如何實現包含數字的字串陣列的自然排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在JavaScript中替換字符串字符 在JavaScript中替換字符串字符 Mar 11, 2025 am 12:07 AM

在JavaScript中替換字符串字符

jQuery檢查日期是否有效 jQuery檢查日期是否有效 Mar 01, 2025 am 08:51 AM

jQuery檢查日期是否有效

jQuery獲取元素填充/保證金 jQuery獲取元素填充/保證金 Mar 01, 2025 am 08:53 AM

jQuery獲取元素填充/保證金

10個jQuery手風琴選項卡 10個jQuery手風琴選項卡 Mar 01, 2025 am 01:34 AM

10個jQuery手風琴選項卡

10值得檢查jQuery插件 10值得檢查jQuery插件 Mar 01, 2025 am 01:29 AM

10值得檢查jQuery插件

HTTP與節點和HTTP-Console調試 HTTP與節點和HTTP-Console調試 Mar 01, 2025 am 01:37 AM

HTTP與節點和HTTP-Console調試

jQuery添加捲軸到Div jQuery添加捲軸到Div Mar 01, 2025 am 01:30 AM

jQuery添加捲軸到Div

自定義Google搜索API設置教程 自定義Google搜索API設置教程 Mar 04, 2025 am 01:06 AM

自定義Google搜索API設置教程

See all articles