1. 配列の平坦化(配列の次元削減とも呼ばれる) 定数テスト = ["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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: IE6/IE7/IE8/IE9/FF 向け CSS ハック (概要)
目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...
目次1. テーブルを作成する1.1. テーブルを作成するための基本構文1.1.1. シンプルなテーブ...
Dockerfile を作成するときは、コンテナが起動する前に初期化構成やカスタム構成を実行するため...
この記事では、主に CSS3 フレックス エラスティック ボックスの自動塗りつぶしの書き方について詳...
MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...
ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...
位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...
ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...
一時テーブルとメモリテーブルメモリ テーブルとは、メモリ エンジンを使用するテーブルを指します。テー...
目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...
今日、MySQL をインストールすると次のエラー メッセージが表示されます。 かなり長い時間ネットで...
問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...
MACでMySQLの初期パスワードを忘れた問題を解決する方法を参考までに共有します。具体的な内容は次...
最初の方法: docker インストール1. オープンソース版のイメージを取得する2. 対応するデー...
MySQL データベース テーブルでは、インデックスを作成、表示、再構築、削除できるため、クエリ速度...