JS配列の次元削減のいくつかの方法の詳細な説明

JS配列の次元削減のいくつかの方法の詳細な説明

2次元配列の次元削減

配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次元削減

arr=[1,2,[3,4],5]とします。
arr1=[].concat(...arr); とします。
//まずスプレッド演算子を使用して最も外側の配列を分割します。concat には、結合された配列を分割する独自の関数があります。console.log(arr1);
// [1, 2, 3, 4, 5]

//apply を使用してデータを分割する前の ES6 との互換性 var arr2=[1,2,[3,4],5];
var arr3=[].concat.apply([],arr2);
コンソールログ(arr3);
// [1, 2, 3, 4, 5]

多次元配列の次元削減

再帰的次元削減

//配列関数の再帰的次元削減を使用するいくつかの方法 //some&concat
//some を使って配列に配列が含まれているかどうかを確認し、次元を減らすために自身を呼び出します function fun(arr){
  arr = [].concat (...arr); 
  // 縮小された配列にまだサブ配列が含まれているかどうかを確認します。let hasArray = arr.some(function(elem){
      Array.isArray(elem) を返します。
  })
  if(hasArray){ // サブ配列が含まれている場合 arr=fun(arr); // サブ配列が含まれていないことが確認されるまで、次元をもう一度減らすことしかできません}
    arr を返します。
};

//各インスタンス
//配列の各要素を判断して、配列が事前に用意された空の配列に格納するのではなく、配列自体を呼び出し続けているかどうかを確認します。function fun2(arr){
  ret = [] とします。
  toArr = function(arr){ とする
    arr.forEach(関数(アイテム){
      配列の項目インスタンス? toArr(item): ret.push(item);
    });
  }
  toArr(arr);
  ret を返します。
}

// 削減と連結
//最後に空の配列を準備し、渡された配列の各項目が配列であるかどうかを確認します。配列である場合は、再度自分自身を呼び出します。配列でない場合は、concat を使用して空の配列にまとめます。function fun3(sarr){
    sarr.reduce((pre,val)=>{ を返す
        Array.isArray(val) を返します。pre.concat(fun3(val)): pre.concat(val)
    },[])
}

配列.プロトタイプ.flat()

ES10 では、ネストされた配列を 1 次元配列に分割するために使用される Array.prototype.flat() が追加されました。このメソッドは新しい配列を返しますが、元のデータには影響しません。

var arr1 = [1, 2, [3, 4]];
arr1.flat(); 
// [1, 2, 3, 4]
 
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
 
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
 
// 任意の深さのネストされた配列を拡張するには、深さとして Infinity を使用します。arr3.flat(Infinity); 
// [1, 2, 3, 4, 5, 6]

これで、JS 配列の次元削減のいくつかの方法についての記事は終了です。より関連性の高い JS 配列の次元削減コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • js で配列の次元を削減する最も包括的な 5 つの方法 (要約)
  • JS 配列の次元削減の実装 Array.prototype.concat.apply([], arr)
  • JavaScript における配列の次元削減の詳細な説明

<<:  MySQL 5.7.19 Winx64 ZIP アーカイブのインストールと使用に関する問題の概要

>>:  mysqlサーバーは--skip-grant-tablesオプションで実行されています

推薦する

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

MySQL 変数宣言とストアド プロシージャの分析

変数の宣言グローバル変数の設定@a='新しい変数' を設定します。関数やストアドプロ...

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

JavaScript でフォロー広告を実装するためのサンプルコード

フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...

トランザクション分離レベルのMySQLケース分析

目次1. 理論シリアル化可能繰り返し読み取りコミットされた読み取りコミットされていない読み取り2. ...

Vueは大画面ページのスクリーン適応を実現します

この記事では、大画面ページのスクリーンアダプテーションを実現するためのVueの具体的なコードを参考ま...

Nginx キャッシュ設定例

Web アプリケーションの開発とデバッグを行う際には、テストのためにブラウザのキャッシュをクリアした...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

CSS でマウスの位置をマッピングし、マウスを動かしてページ要素を制御する (サンプル コード)

マウスの位置をマッピングしたり、ドラッグ効果を実装したりすることは、 JavaScriptで行うこと...

17 個の JavaScript ワンライナー

目次1. DOMとBOM関連1. 要素にフォーカスがあるかどうかを確認する2. 要素の兄弟ノードをす...

MySQLクライアント認証後の接続失敗の問題に対する完璧なソリューション

MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...

Linux での JDK のインストール (OpenJDK のアンインストールを含む) の概要

1. openjdkを表示する rpm -qa|grep jdk 2. openjdk を削除します...

Ubuntu 16.04 カーネルのアップグレード手順

1. 環境仮想マシン上で実行されているUbuntu 16.04では、コマンドuname -rを使用し...