jsは配列の平坦化を実装します

jsは配列の平坦化を実装します

配列をフラット化する方法

配列のフラット化とは何ですか?

配列の平坦化: 多次元配列を 1 次元配列に変換することを指します。

例: 次の配列をフラット化します。

const arr = [1, [2, 3, [4, 5]]] // ---> [ 1, 2, 3, 4, 5 ]

1.flat() の使用

flat() メソッドは ES10 で提案されました。指定された深さで配列を再帰的に走査し、走査されたサブ配列の要素とすべての要素を新しい配列にマージして返します。 (flat は「水平、平ら」という意味です)

const result1 = arr.flat(Infinity) // 深さを無限に指定します console.log(result1) // [ 1, 2, 3, 4, 5 ]
const result2 = arr.flat(1) // 深さを1に指定
console.log(結果2) // [ 1, 2, 3, [ 4, 5 ] ]
const result3 = arr.flat(2) // 深さを2に指定します
console.log(結果3) // [ 1, 2, 3, 4, 5 ]

2. 正規表現を使用する

以下の方法で取得された配列要素は文字列に変換されますが、これは推奨されません。

const result1 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',')
console.log(result1) // [ '1', '2', '3', '4', '5' ] 配列要素は文字列に変換されます

上記の方法を最適化します。

const result2 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']')
console.log(結果2) // [ 1, 2, 3, 4, 5 ]

3.reduce()+concat()を使用する

Reduce を使用して配列の現在の値と前の値を取得し、現在の値が配列であるかどうかを判断し、初期値を [] に設定してから、concat を使用して配列を結合します。

  • Reduce() メソッド: 配列内の各要素に対して指定したリデューサー関数を (昇順で) 実行し、結果を 1 つの戻り値にまとめます。
  • concat() メソッド: 2 つ以上の配列を結合するために使用されます。このメソッドは既存の配列を変更せず、新しい配列を返します。
関数flatten(arr){
  戻り値 arr.reduce((pre, current) => {
    pre.concat(Array.isArray(current) ? flatten(current) : current) を返します
  }, [])
}
const 結果 = flatten(arr)
console.log(結果) // [ 1, 2, 3, 4, 5 ]

4. 関数の再帰を使用する

配列をループし、配列要素が含まれている場合は再帰的に処理し、最後に配列を 1 次元配列に変換します。

定数結果 = []
関数exec(arr) {
  arr.forEach(アイテム => {
    Array.isArray(item) の場合 {
      実行(アイテム)
    } それ以外 {
      結果.push(アイテム)
    }
  })
}
実行(arr)
console.log(結果) // [ 1, 2, 3, 4, 5 ]

5. スプレッド演算子 + concat() を使用する

ES6 で導入された新しいスプレッド演算子を使用すると、配列の次元を (一度に 1 次元ずつ) 削減し、ループして配列が含まれているかどうかを判断し、連結マージを実行できます。

some() メソッド: 配列内に、指定された関数テストに合格する要素が少なくとも 1 つあるかどうかをテストします (ブール値を返します)。

関数flatten(arr){
  (arr.some(item => Array.isArray(item))) の間 {
    arr = [].concat(...arr)
  }
  リターン
}
const 結果 = flatten(arr)
console.log(結果) // [ 1, 2, 3, 4, 5 ]

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • JS配列重複排除の詳細
  • JavaScript配列の重複排除のいくつかの方法についての詳細な説明
  • JavaScript 配列重複排除問題の詳細な研究
  • JavaScript 配列重複排除ソリューション
  • JavaScript データのフラット化の詳細な説明
  • JavaScript インタビュー: 配列の平坦化メソッドを実装する方法
  • 配列をフラット化する 5 つの JavaScript の方法
  • JavaScript 配列の重複排除とフラット化関数の紹介

<<:  Dockerを使用してブログサイトを素早く構築する方法の詳細な説明

>>:  MySQL はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

推薦する

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

MySQL データベースは何をしますか?

MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...

VMware15 仮想マシン ブリッジ モードでインターネットにアクセスできない問題の解決方法

説明 ソリューションVMware 15 仮想マシン ブリッジ モードではインターネットにアクセスでき...

vue3 学習ノートにおける axios の使用の変更の概要

目次1. axioの基本的な使い方2. クロスドメインの問題を解決するには? 3. パッケージ4. ...

MySQL と接続関連のタイムアウトの詳細な概要

MySQL と接続関連のタイムアウト序文:今日、同僚から、データ量が多いときに MySQL データベ...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

MySQL 5.7.22 バイナリパッケージのインストールとインストール不要版 Windows 設定方法

次のコードは、MySQL 5.7.22 バイナリ パッケージのインストール方法を紹介しています。具体...

Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明

基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...

CSS スタイルの競合を解決するいくつかの方法 (要約)

1. セレクターを調整するコンビネータを使用すると、セレクターの説明をより正確に記述できます (C...

Expressはログイン認証を実装

この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的...

React+Amapは緯度と経度をリアルタイムで取得し、住所を特定します

目次1. マップを初期化する2. マップポイント3. 位置決めを有効にする4. マップの変更を監視す...

フロントエンドAIカットのコツ(体験談)

AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...

MySQL DML ステートメントの概要

DML 操作とは、データベース内のテーブル レコードに対する操作を指し、主にテーブル レコードの挿入...

JavaScript のプロトタイプとプロトタイプチェーンの詳細な説明

目次プロトタイプチェーン図プロトタイピングに必須の知識プロトタイププロパティ(プロトタイプを表示) ...