Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

数値要素とアルファベット要素の配列を並べ替える(自然並べ替え)JavaScript


いくつかの数値といくつかの文字列を含む配列があります。数字が並べ替えられ、すべての文字列の前に配置され、次に文字列がアルファベット順に並べ替えられるように、配列を並べ替える必要があります。

例-

ソート後のこの配列

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];

このように見えるはずです-

[1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd']

それでは、このためのコードを書いてみましょう-

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];
const sorter = (a, b) => {
   if(typeof a === 'number' && typeof b === 'number'){
      return a - b;
   }else if(typeof a === 'number' && typeof b !== 'number'){
      return -1;
   }else if(typeof a !== 'number' && typeof b === 'number'){
      return 1;
   }else{
      return a > b ? 1 : -1;
   }
}
arr.sort(sorter);
console.log(arr);

出力

コンソールの出力は-

になります
[1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd']

コードを理解する-

このコードの主要部分はソーター関数です。コールバック関数が2つの引数を受け取り、どちらも配列の要素であることがわかっています。

今、4つの可能性があります-

  • aとbはどちらも数字です→この場合、小さい数字を大きい数字の前に置きます

  • aは数字ですが、bは文字列です→この場合、質問で尋ねられた文字列(b)の前に数字(a)を配置します。

  • aは文字列ですが、bは数字です→この場合、bをaの前に配置します

  • aとbはどちらも文字列です→アルファベット順で小さい文字列をチェックします。つまり、前に来て前に配置します。


  1. Javascriptでのマージソートとクイックソート

    マージソートは、分割統治法に基づくソート手法です。最悪の場合の時間計算量はΟ(n log n)です。ただし、このアルゴリズムは余分なO(n)メモリを必要とするため、スペースの面で追加のコストが発生します。 次に、このアルゴリズムをどのように実装するかを見てみましょう。 mergeSortとmergeの2つの関数を作成します。 マージ −この関数は2つの引数を取ります。これらは、2つの部分配列であり、要素を正しい順序で挿入することにより、1つに連結されます。 マージソート −この関数は、配列の左半分と右半分でmergeSortを再帰的に呼び出し、mergeを使用してこれらの配列部分を結合し

  2. 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-