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 はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

推薦する

Docker はすべてのコンテナをバッチ起動して閉じます

Dockerの場合すべてのコンテナコマンドを開始する docker を起動します $(docker ...

CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

序文最近CocosCreatorを学びたいと思ったので、エディターをダウンロードして起動しました。誰...

MySQL 5.7.25 圧縮版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...

スライドドアを実装するための CSS サンプルコード

いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...

Vue3.0 異なる解像度のコンピュータの適応操作

まず依存関係をインストールする必要があります npm i lib-flexible-computer...

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

Vueは3段階のナビゲーション表示と非表示を実装します

この記事では、3階層ナビゲーションの表示と非表示を実現するためのVueの具体的なコードを例として紹介...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

Django が uwsgi+nginx プロキシで静的リソースにアクセスできない問題の解決方法

uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...

ES5とES6の違いを分析する

目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...

Windows 10 で MySQL の解凍バージョンをインストールする方法の詳細なグラフィック チュートリアル

MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...

vue3 のさまざまな構文形式を比較したサンプルコード

デフォルトのテンプレートメソッドはvue2に似ており、コンポーネント内のセットアップ関数を使用します...

MySQL コピーテーブルと許可分析の 3 つの実装方法

テーブルを素早くコピーする方法まず、テーブル db1.t を作成し、1000 行のデータを挿入します...

Linux で一般的なソフトウェアを設定する方法

新しいLinuxサーバーを入手する場合、通常は次の5つの構成を実行する必要があります。 HOSTAN...

Linux システムで HugePages をすばやく構成するための完全な手順

序文Linux システムの HugePages と Oracle データベースの最適化については、関...