JavaScriptで数字と英数字の混合配列を並べ替える方法
このような英数字の文字列の配列があるとします-
const arr = ['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3'];
唯一無二の引数など、1つの配列でJavaScript関数を作成する必要があります。
そして、関数はこの配列をインプレースでソートする必要があります-
- 数字のみを含む文字列は、最初に昇順で並べ替える必要があります。
- アルファベットと数字の組み合わせを含む文字列は、最初にアルファベットに従って、次に数字に従って昇順で並べ替える必要があります。
したがって、出力は次のようになります-
const output = ['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3'];
例
const arr = ['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3']; const alphaNumericSort = (arr = []) => { const sorter = (a, b) => { const isNumber = (v) => (+v).toString() === v; const aPart = a.match(/\d+|\D+/g); const bPart = b.match(/\d+|\D+/g); let i = 0; let len = Math.min(aPart.length, bPart.length); while (i < len && aPart[i] === bPart[i]) { i++; }; if (i === len) { return aPart.length - bPart.length; }; if (isNumber(aPart[i]) && isNumber(bPart[i])) { return aPart[i] - bPart[i]; }; return aPart[i].localeCompare(bPart[i]); }; arr.sort(sorter); }; alphaNumericSort(arr); console.log(arr);
出力
そして、コンソールの出力は-
になります[ '1', '2', 'A1', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3' ]
-
JavaScriptで挿入ソートを実装する方法は?
挿入ソート 配列をソートするのは非常に単純な比較ソートです。 比較ソート 並べ替えようとしている現在の値を配列内の他の値と比較します。一度に1つのアイテムを処理し、必要な並べ替えられた配列を取得するために、各アイテムを正しい場所に繰り返し配置します。 実際、挿入 ソートは、ヒープソートなどの一部の高度なアルゴリズムほど効率的ではありません。 またはマージソート 。大規模なプログラムを扱う場合、これは最良のオプションではありません。 隠れた定数値が低いため 、挿入ソートは、小さな配列を処理する際に、ヒープやクイックソートなどの高度なアルゴリズムの一部よりも優れています。 。 挿入ソート 配
-
JavaScriptのArray.prototype.sort()。
JavaScript Array.prototype.sort()メソッドは、配列の並べ替えに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、Array.prototype.sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-