JavaScript 配列の重複排除とフラット化関数の紹介

JavaScript 配列の重複排除とフラット化関数の紹介

1. 配列の平坦化(配列の次元削減とも呼ばれる)

flat()メソッドは、配列を指定された深さまで再帰的に走査し、走査されたサブ配列の要素とすべての要素を新しい配列にマージして返します。

定数テスト = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]

// flat がパラメータを渡さない場合、デフォルトで 1 つのレイヤーをフラット化します。test.flat()
// ["a", "b", "c", "d", ["e", ["f"]], "g"]

// flat は整数パラメータを渡します。これはフラット化されたレイヤーの数です。test.flat(2)
// ["a"、"b"、"c"、"d"、"e"、["f"]、"g"]

// Infinity キーワードをパラメータとして使用すると、ネストが何層あっても 1 次元配列に変換されます test.flat(Infinity)
// ["a", "b", "c", "d", "e", "f", "g"]

// 0 未満の整数を渡すと、フラット化せずに元の配列を返します。test.flat(0)
テスト.フラット(-1)
// ["a"、["b"、"c"]、["d"、"e"、"f"]]、"g"]]

// 元の配列に空きがある場合、flat() メソッドは空き部分をスキップします。
["a", "b", "c", "d",,].flat()
// ["a", "b", "c", "d"]

方法1: 削減メソッドを使用する

一気に平らにする

関数flattenDeep(arr){ 
    Array.isArray(arr) を返す
      ? arr.reduce( (acc, cur) => [...acc, ...flattenDeep(cur)] , [])
      : [編曲]
}

// テスト var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]
flattenDeep(テスト)
// ["a", "b", "c", "d", "e", "f", "g"]

フラット関数を実装します。

関数flat(arr, 深さ = 1) {
    深さ > 0 を返す
        ? arr.reduce((acc, cur) => {
        Array.isArray(cur) の場合
            [...acc, ...flat(cur, depth-1)] を返します
        }
        [...acc, cur]を返す
    } , [])
      :arr
}

// テスト var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]
// パラメータが渡されない場合、デフォルトのフラット化は 1 層です flat(test)
// ["a", "b", "c", "d", ["e", ["f"]], "g"]

// フラット化されたレイヤーの数を表す整数パラメータを渡します flat(test, 2)
// ["a"、"b"、"c"、"d"、"e"、["f"]、"g"]

// Infinity キーワードをパラメータとして使用すると、ネストされたレベルがいくつあっても、1 次元配列に変換されます。flat(test, Infinity)
// ["a", "b", "c", "d", "e", "f", "g"]

// 0 未満の整数を渡すと、フラット化せずに元の配列を返します。flat(test, 0)
フラット(テスト、-10)
// ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]];

// 元の配列に空きがある場合、flat() メソッドは空き部分をスキップします。
var arr = ["a", "b", "c", "d",,]
フラット(arr)
// ["a", "b", "c", "d"]

方法2: スタック

すべての次元を一度に縮小する

関数flattenDeep(arr){
  定数結果 = [] 
  //配列要素をスタックにコピーします。直接代入すると元の配列が変更されます。const stack = [...arr]
  // スタックが空でない場合は、while (stack.length !== 0) { をループします。
    定数val = stack.pop() 
    Array.isArray(val) の場合 {
      // 配列が再度スタックにプッシュされ、1つのレイヤーが拡張された場合 stack.push(...val) 
    } それ以外 {
      // 配列でない場合は、先頭挿入を使用して結果配列に挿入します result.unshift(val)
    }
  }
  結果を返す
}

// テスト var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]
平らにする(動物)
// ["a", "b", "c", "d", "e", "f", "g"]

2. アレイ重複排除

方法 1: 設定 (ES6)

関数 unique(arr) {
    Array.from(new Set(arr)) を返します
}
// または var unique = arr => [...new Set(arr)]

// テスト var arr = [1, 2, 2, 3]
ユニーク(arr); // [1, 2, 3]

方法2: 減らす

関数 unique(arr) {
    戻り値 arr.sort().reduce((acc, cur) => {
     acc.length === 0 || acc[acc.length - 1] !== cur の場合 {
         acc.push(cur);
     }
     返品
 }, [])}
;

// テスト var arr = [1, 2, 2, 3]
ユニーク(arr); // [1, 2, 3]


方法3: フィルター

関数 unique(arr) { 
    arr.filter( (要素, インデックス, 配列) => { を返します。
     array.indexOf(要素) === インデックスを返します
 })
}

// テスト var arr = [1, 2, 2, 3]
ユニーク(arr); // [1, 2, 3]

これで、JavaScript 配列の重複排除とフラット化関数に関するこの記事は終了です。より関連性の高い js 配列の重複排除とフラット化関数のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript で重複配列を削除する 5 つの一般的な方法
  • JS配列重複排除の詳細
  • JavaScript配列の重複排除のいくつかの方法についての詳細な説明
  • JavaScript 配列重複排除ソリューション
  • JavaScript配列重複排除の詳細な説明
  • JS で配列の重複排除を実装する 7 つの方法

<<:  HTML の水平および垂直中央揃えの問題の概要

>>:  IE6/IE7/IE8/IE9/FF 向け CSS ハック (概要)

推薦する

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

MYSQLテーブルの包括的な概要

目次1. テーブルを作成する1.1. テーブルを作成するための基本構文1.1.1. シンプルなテーブ...

docker エントリポイントファイルの詳細な説明

Dockerfile を作成するときは、コンテナが起動する前に初期化構成やカスタム構成を実行するため...

CSS3 フレックスボックス自動記入の書き方を詳しく解説

この記事では、主に CSS3 フレックス エラスティック ボックスの自動塗りつぶしの書き方について詳...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...

Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明

一時テーブルとメモリテーブルメモリ テーブルとは、メモリ エンジンを使用するテーブルを指します。テー...

localStorageの有効期限を設定するいくつかの方法

目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...

MySQL インストール プロンプト「詳細なヘルプについては NET HELPMSG 3534 と入力してください」の解決方法

今日、MySQL をインストールすると次のエラー メッセージが表示されます。 かなり長い時間ネットで...

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

MAC 上の MySQL の初期パスワードを忘れた場合の対処方法

MACでMySQLの初期パスワードを忘れた問題を解決する方法を参考までに共有します。具体的な内容は次...

Dockerを使用してプライベートGitLabを構築する2つの方法

最初の方法: docker インストール1. オープンソース版のイメージを取得する2. 対応するデー...

MySQL コマンドを使用してインデックスを作成、削除、およびクエリする方法の紹介

MySQL データベース テーブルでは、インデックスを作成、表示、再構築、削除できるため、クエリ速度...