紹介の前に、質問を投げます:複数の配列を1つの配列に結合する方法は?
次の共有セッションは、次のサブセクションに分かれています。
1. concatメソッドの基本的な紹介
2。例からconcatメソッドを感じます
1. concatメソッドの基本的な紹介
concatメソッドは、複数の配列のマージに使用されます。新しい配列のメンバーを元の配列の最後に追加し、新しい配列を返します。元の配列は変更されません。
console.log([]。concat([1]、[2]、[3])); // [1、2、3] console.log([]。concat([[1]、[2]、[3]])); // [1]、[2]、[3]] Console.log([]。concat(4、[5,6]、[7]])); // [4、[5、6]、[7]]
上記のコードでは、最初の返品値は、空の配列を3つの配列[1]、[2]、[3]とアレイにマージし、[1、2、3]を返すことです。 2つ目は、空の配列と2次元数を組み合わせることです。 2次元配列のメンバーは[1]、[2]、[3]であるため、[[1]、[2]、[3]]が返されます。返された2次元アレイに注意してください。 3番目の例は同じです。ここでは、概念の理解は非常に重要です。つまり、新しい配列のメンバーを元のアレイのテールに追加することです。
アレイをパラメーターとして受け入れることに加えて、concatは他のタイプの値をパラメーターとして受け入れることもできます。それらは新しい要素として使用され、配列の端を追加します。
console.log([]。concat(1,2,3)); // [1,2,3]; // console.log([]。concat(1、[2,3]))に相当します。 // [1,2,3]; console.log([]。concat([1]、[2,3])); // [1,2,3];
ここにはコンテンツが少なくなりますが、非常に簡単に見えます。しかし、理解するのは本当に簡単ではありません。
2。例からconcatメソッドを感じます
基本的な知識について話した後、私が最近遭遇した質問をお見せしましょう。オリジナルのタイトルはこのようなものです。
例を見て、それが何を意味するかを見ることができます。
この質問の解決策の1つは次のとおりです。
var flatten = function(arr){return [] .concat.apply([]、arr);};この単純な関数は、配列内の要素をマージする機能を実現できます。しかし、この返品値を理解すると、問題が発生します。
質問:なぜ適用方法を使用することと、適用方法を使用しないことに違いがあるのですか?
console.log([]。concat.Apply([]、[[1]、[2]、[3]])); // [1、2、3] console.log([]。concat([[1]、[2]、[3]])); // [[1]、[2]、[3]]
上記のコードでは、新しい配列も空の配列でテールに追加され、最初のアレイが戻ります[1,2,3]。 2つ目は2次元配列です。
投げて追いかけた期間の後、私はついにさまざまな理由を理解しました。
まず、空の配列でインスタンスメソッドをconcatと呼び出すと、パラメーターをconcatに渡し、配列の最後にプッシュします。つまり、空の配列は通過した配列の最も外側の配列とマージされ、新しい配列が返されます。
console.log([]。concat(1,2,3)); // [1、2、3] console.log([]。concat([1]、[2]、[3])); // [1、2、3] console.log([]。concat([[1]、[2]、[3]])); // [1]、[2]、[3]] console.log([]。concat([[1]、[2]、[3]]); // [[1]、[2]、[3]]]
上記のコードでは、いくつかの配列から1次元配列、2次元配列、3次元配列に徐々に変更されます。
JavaScriptの詳細な説明と要約の呼び出し、Apply、およびBindメソッドでは、適用方法の関数は呼び出しメソッドと類似しており、このポイント(関数が実行される範囲)も変更し、指定された範囲で関数を呼び出すことが言及されています。関数はすぐに実行されます。唯一の違いは、関数が実行されたときに引数として配列を受信することです。
Applyメソッドの最初のパラメーターは、これが指摘したいオブジェクトでもあります。 nullまたは未定義またはこれに設定すると、グローバルオブジェクトを指定することに相当します。 2番目のパラメーターは配列であり、配列のすべてのメンバーがパラメーターとして使用され、元の関数は呼び出されたときに渡されます。元の関数のパラメーターは、コールメソッドに1つずつ追加する必要がありますが、適用方法では、配列として追加する必要があります。
console.log([]。concat.Apply([]、[[1]、[2]、[3]])); // [1、2、3] console.log([]。concat([[1]、[2]、[3]])); // [[1]、[2]、[3]]
コードからわかるように、最初のコードは空の配列で最初にconcatメソッドを呼び出します。この方法の機能は、新しい配列のメンバーを元の配列の最後に追加することです。適用方法が再び呼び出され、最初のパラメーターが渡され、実行されるオブジェクトの範囲が指定されます。 2番目のパラメーターの関数は、配列のすべてのメンバーを一度にパラメーターとして渡し、呼び出されたときに配列に渡すことです。
したがって、concatと適用方法が同時に使用される場合、2つの方法の機能が重ねられます。これは、concatのみを使用するのとは異なる現象です。例を見てみましょう。
console.log([]。concat([1,2,3])); // [1、2、3] console.log([]。concat.Apply([]、[[1]、[2]、[3]])); // [1、2、3] console.log([]。concat([[1]、[2]、[3]])); // [1]、[2、[3]] console.log([]。concat([[1]、[2]、[3]]); // [[1]、[2]、[3]] console.log([]。concat([[1]、[2]、[3]]); // [[1]、[2]、[3]] console.log([]。concat([[1]、[2]、[3]]); // [[1]、[2]、[3]]] console.log([]。concat.Apply([]、[[[[1]、[2]、[3]]])); // [[[1]、[2]、[3]]]]]];
上記のコードでは、concatメソッドがほとんどの数値を組み合わせて、マージに基づいて次のレイヤーアレイをマージします。
console.log([]。concat.Apply([]、[[1]、[2]、[3]]) // [1,2,3]
要約:
1. concatメソッドを単独で使用する場合、新しい配列のメンバーが元の配列の最後に追加されます。
2。適用方法を使用して、このconcatメソッドのこのポインターを指定する場合、2つの方法の関数が重ねられます。
3。アレイ要素をマージする方法:
var flatten = function(arr){return [] .concat.apply([]、arr);}; var flatten = function(array){return array.reduce(function(a、b){return a.concat(b);}、[])}上記は、編集者が紹介したconcatメソッドを使用してアレイをマージする方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!