筆記試験によく表示されるインタビューの質問。 JavaScriptの配列は、他の言語の配列とは多少異なります。アレイメソッドの学習を促進するために、エディターは以下の配列の操作方法をコンパイルしました。見てみましょう。
配列作成
JavaScriptに配列を作成するには、2つの方法があります。 1つ目は、アレイコンストラクターを使用することです。
var arr1 = new array(); //空の配列を作成するvar arr2 = new array(20); // 20項目のアレイを作成しますvar arr3 = new Array( "lily"、 "Lucy"、 "Tom"); // 3つの文字列付き配列を作成します
配列を作成する2番目の基本的な方法は、配列リテラル表記を使用することです。
var arr4 = []; //空のアレイvar arr5 = [20]を作成します。 // 1つのアイテムを含むアレイを作成しますvar arr6 = ["lily"、 "Lucy"、 "Tom"]; // 3つの文字列を含む配列を作成します
配列の値を読み取り、設定するときは、正方形のブラケットを使用して、対応する値の0ベースの数値インデックスを提供します。
var arr6 = ["lily"、 "Lucy"、 "Tom"]; // array alert(arr6 [0])を作成します。 // lilyarr6 [1] = "mary"; // 2番目のアイテムをMaryArr6 [3] = "Sean"に変更します。 // 4番目のアイテムをショーンに追加します
JavaScriptの配列の長さプロパティを変更できます。次の例を参照してください。
var arr = ["lily"、 "Lucy"、 "Tom"]; // 3つの文字列arr [arr.length] = "sean"を含む配列を作成します。 // 3の添え字に「sean」arr.length = arr.length-1を追加します(つまり、配列の終わり)。
オブジェクトが配列オブジェクトであるかどうかを判断する必要がある場合、ECMAScript 5の前に、ARRAYのインスタンスを使用して判断できますが、オペレーターのインスタンスの問題は、グローバルな実行環境が1つしかないと仮定していることです。 Webページに複数のフレームワークが含まれている場合、実際には2つの異なるグローバル実行環境があります。したがって、アレイコンストラクターには2つ以上の異なるバージョンがあります。あるフレームワークから別のフレームワークに配列を渡すと、渡された配列には、2番目のフレームワークでネイティブに作成された配列とは異なるコンストラクターがあります。
ECMAScript 5は、array.isarray()メソッドを追加しました。この方法の目的は、どのグローバルな実行環境が作成されたかに関係なく、値が配列であるかどうかを判断することです。
配列メソッド
アレイメソッドを紹介することから始めましょう。配列の方法には、オブジェクトオブジェクトから継承された配列プロトタイプメソッドとメソッドが含まれます。ここでは、配列プロトタイプメソッドのみを紹介します。アレイプロトタイプメソッドには、主に以下が含まれます。
参加する()
push()およびpop()
shift()およびunshift()
選別()
逆行する()
concat()
スライス()
スプライス()
indexof()およびlastIndexof()(ES5に新しく追加)
foreach()(ES5に新しく追加)
map()(ES5に新しく追加)
filter()(ES5に新しく追加)
すべて()(ES5に新しく追加)
some()(ES5に新しく追加)
reduce()およびredCeRight()(ES5に新しく追加)
ES5の新しいブラウザサポート:
オペラ11+
Firefox 3.6+
Safari 5+
クロム8+
インターネットエクスプローラー9+
サポートされているブラウザバージョンの場合、アレイプロトタイプ拡張機能を介して実装できます。以下は、各メソッドの基本機能の詳細な紹介です。
1。Join()
Join(Separator):Arrayのグループ要素を文字列に入れ、セパレーターをセパレーターとして使用します。省略した場合は、デフォルトでコンマをセパレーターとして使用します。このメソッドは、1つのパラメーターのみを受信します。つまり、セパレーターです。
var arr = [1,2,3]; console.log(arr.join()); // 1,2,3Console.log(arr.join( " - ")); // 1-2-3Console.log(arr); // [1、2、3](元の配列は変更されていません)
Join()メソッドを使用して、文字列を繰り返すことができます。文字列と繰り返しの数を渡すだけで、繰り返される文字列を返します。関数は次のとおりです。
関数RepeatString(str、n){return new array(n + 1).join(str);} console.log(repeatstring( "abc"、3)); // abcabcabcconsole.log(repeatstring( "hi"、5)); // hihihihihi2。プッシュ()とpop()
push():任意の数のパラメーターを受信し、配列の最後に1つずつ追加し、変更された配列の長さを返すことができます。
pop():配列の最後にある最後のアイテムを削除し、配列の長さ値を下げてから、削除されたアイテムを返します。
var arr = ["lily"、 "lucy"、 "tom"]; var count = arr.push( "jack"、 "sean"); console.log(count); // 5Console.log(arr); // ["lily"、 "Lucy"、 "Tom"、 "jack"、 "sean"] var item = arr.pop(); console.log(item); // seanconsole.log(arr); // ["lily"、 "Lucy"、 "Tom"、 "Jack"]]
3。Shift()およびunshift()
Shift():元の配列の最初のアイテムを削除し、削除された要素の値を返します。配列が空の場合は、未定義の返品を返します。
Unshift:元の配列の先頭に引数を追加し、配列の長さを返します。
この一連のメソッドは、上記のpush()およびpop()メソッドに正確に対応しています。 1つはオペランドアレイの始まりであり、もう1つはオペランドアレイの終わりです。
var arr = ["lily"、 "lucy"、 "tom"]; var count = arr.unshift( "jack"、 "sean"); console.log(count); // 5Console.log(arr); // ["ジャック"、 "sean"、 "lily"、 "Lucy"、 "Tom"] var item = arr.shift(); console.log(item); // JackConsole.log(arr); // ["sean"、 "lily"、 "Lucy"、 "Tom"]]
4。sort()
sort():配列アイテムを昇順で配置します。つまり、最小値は最前線にあり、最大値は最後です。
ソートするとき、sort()メソッドは各配列アイテムのtoString()変換メソッドを呼び出し、結果の文字列を比較してソートする方法を決定します。配列内の各アイテムが数値であっても、sort()メソッドは文字列を比較するため、次の状況が発生します。
var arr1 = ["a"、 "d"、 "c"、 "b"]; console.log(arr1.sort()); // ["a"、 "b"、 "c"、 "d"] arr2 = [13、24、51、3]; console.log(arr2.sort()); // [13、24、3、51](メタ配列が変更されます)
上記の問題を解決するために、sort()メソッドは比較関数をパラメーターとして受信できるため、どの値が先にあるかを指定することができます。比較関数は2つのパラメーターを受信し、最初のパラメーターが2番目の前にある場合は負の数値を返し、2つのパラメーターが等しい場合は0を返し、最初のパラメーターが2番目のパラメーターの後にある場合は正の数値を返します。ここに単純な比較関数があります:
function compare(value1、value2){if(value1 <value2){return -1;} else if(value1> value2){return 1;} els {return 0;}} arr2 = [13、24、51、3]; console.log(arr2.sort(compare)); // [3、13、24、51]比較関数を通じて下降ソート結果を生成する必要がある場合は、比較関数によって返される値を交換するだけです。
function compare(value1、value2){if(value1 <value2){return 1;} else if(value1> value2){return -1;} els {return 0;}} arr2 = [13、24、51、3]; console.log(arr2.sort(compare)); // [51、24、13、3]5。reverse()
Reverse():配列アイテムの順序を反転します。
var arr = [13、24、51、3]; console.log(arr.Reverse()); // [3、51、24、13] console.log(arr); // [3、51、24、13](元の配列の変更)
6。concat()
concat():元の配列に引数を追加します。この方法は、最初に現在の配列のコピーを作成し、次に受信したパラメーターをコピーの最後に追加し、最後に新しく構築された配列を返します。パラメーターをconcat()メソッドに渡すことなく、現在の配列をコピーしてコピーを返すだけです。
var arr = [1,3,5,7]; var arrcopy = arr.concat(9、[11,13]); console.log(arrcopy); // [1、3、5、7、9、11、13] console.log(arr); // [1、3、5、7](元の配列は変更されていません)
上記のテスト結果から、渡されたものが配列ではない場合、パラメーターが配列に直接追加されます。渡されたものが配列である場合、配列内のアイテムが配列に追加されます。しかし、渡された人が2次元配列である場合はどうなりますか?
var arrcopy2 = arr.concat([9、[11,13]]); console.log(arrcopy2); // [1、3、5、7、9、array [2]] console.log(arrcopy2 [5]); // [11、13]
上記のコードでは、arrcopy2 arrayの5番目のアイテムは、2つのアイテムを含むアレイです。つまり、concatメソッドは、配列に渡された各アイテムのみを配列に追加することができます。配列に渡された一部のアイテムが配列である場合、この配列アイテムはアイテムとしてarrcopy2にも追加されます。
7。スライス()
SLICE():指定された開始サブスクリプトから元のアレイの最終サブスクリプトまでのアイテムで構成される新しい配列を返します。 Slice()メソッドは、1つまたは2つのパラメーター、つまり返されるアイテムの開始位置と終了位置を受け入れることができます。 1つのパラメーターのみの場合、Slice()メソッドは、パラメーターの指定された位置から現在の配列の最後まで開始するすべてのアイテムを返します。 2つのパラメーターがある場合、メソッドは項目を開始位置と終了位置の間に返しますが、エンド位置にアイテムは含まれていません。
var arr = [1,3,5,7,9,11]; var arrcopy = arr.slice(1); var arrcopy2 = arr.slice(1,4); var arrcopy3 = arr.slice(1、-2); var arrcopy4 = arr.slice(-4、-1); console.log(arr); // [1、3、5、7、9、11](元の配列は変更されていません)console.log(arrcopy); // [3、5、7、9、11] console.log(arrcopy2); // [3、5、7] console.log(arrcopy3); // [3、5、7、11] console.log(arrcopy2); // [3、5、7] console.log(arrcopy3); // [3、5、7] console.log(arrcopy4); // [5、7、9]
Arrcopyは1つのパラメーターのみを設定します。つまり、開始サブスクリプトは1であるため、返された配列は添え字1(添え字1を含む)であり、アレイの最後まで開始します。
arrcopy2は2つのパラメーターを設定し、Start subscript(1を含む)のサブアレイ(1を含む)と終了サブスクリプト(4を除く)を返します。
arrcopy3は2つのパラメーターを設定し、添え字を負の数として終了します。負の数が発生したら、アレイ長(6)の値に負の数を追加して、その位置の数を置き換えるため、1〜4(除く)から始まるサブアレイになります。
Arrcopy4の両方のパラメーターは負の数値であるため、Arrayの長さ6に追加され、正の数に変換されるため、スライスに相当します(2,5)。
8。Splice()
Splice():非常に強力な配列メソッドで、削除、挿入、交換を実装できる多くの用途があります。
削除:任意の数のアイテムを削除できます。2つのパラメーターを指定するだけです。削除する最初のアイテムの場所と削除するアイテムの数です。たとえば、Splice(0,2)は、配列内の最初の2つのアイテムを削除します。
挿入:指定された位置に任意の数のアイテムを挿入し、3つのパラメーターを提供するだけです:開始位置、0(削除するアイテムの数)、および挿入するアイテム。たとえば、Splice(2,0,4,6)は、現在の配列の位置2から4と6を挿入します。
交換:指定された位置に任意の数のアイテムを挿入し、同時に任意の数のアイテムを削除できます。開始位置、削除するアイテムの数、挿入する任意の数のアイテムの3つのパラメーターのみを指定する必要があります。挿入されたアイテムの数は、削除されたアイテムの数に等しくなる必要はありません。たとえば、Splice(2,1,4,6)は、現在の配列位置2でアイテムを削除し、位置2から4と6を挿入します。
Splice()メソッドは、常に元の配列から削除されたアイテムを含む配列を常に返し、アイテムが削除されていない場合、空の配列が返されます。
var arr = [1,3,5,7,9,11]; var arrremoved = arr.splice(0,2); console.log(arr); // [5、7、9、11] console.log(arrremoved); // [1、3] var arrremoved2 = arr.splice(2,0,4,6); console.log(arr); // [5、7、4、6、9、11] console.log(arrremoved2); // [] var arrremoved3 = arr.splice(1,1,2,4); console.log(arr); // [5、2、4、4、6、9、11] console.log(arrremoved3); // [7]
9。indexof()およびlastIndexof()
indexof():2つのパラメーターを受信します。1つのパラメーターと(オプションの)インデックスを検索開始点の位置を示すインデックス。ここで、アレイの先頭から後方を調べます(位置0)。
LastIndexof:2つのパラメーターを受信します。1つのパラメーターと(オプションの)インデックスを検索開始点の位置を示すインデックス。ここで、配列の終わりから楽しみにしてください。
どちらの方法も、アレイにあるアイテムの位置を返します。または、見つからない場合は1を返します。最初のパラメーターを配列内の各アイテムと比較すると、収束演算子が使用されます。
var arr = [1,3,5,7,7,7,5,3,1]; console.log(arr.indexof(5)); //2Console.log(arr.lastindexof(5)); //5console.log(arr.indexof(5,2)); //2CONSOLE.LOG(Arr.lastIndexof(5,4)); //2Console.log(arr.indexof("5 ")); // -110。foreach()
foreach():配列を横断し、配列内の各アイテムで指定された関数を実行します。この方法には返品値がありません。パラメーターはすべて関数タイプであり、デフォルトで渡されるパラメーターがあります。パラメーターは次のとおりです。トラバースアレイコンテンツ。対応する配列インデックス、配列自体。
var arr = [1、2、3、4、5]; arr.foreach(function(x、index、a){console.log(x + '|' + index + '|' +(a === arr)); //出力は:// 1 | 0 | 0 | true // 2 | 1 | true // 3 |11。map()
Map():「Map」を指します。「Map」は、配列内の各アイテムで特定の関数を実行し、各関数呼び出しの結果で構成される配列を返します。
次のコードでは、MAPメソッドを使用して、配列内の各数値を四角化します。
var arr = [1、2、3、4、5]; var arr2 = arr.map(function(item){return item*item;}); console.log(arr2); // [1、4、9、16、25]12。filter()
filter():「フィルター」関数、配列内の各アイテムは特定の関数を実行し、フィルタリング条件を満たす配列を返します。
var arr = [1、2、3、4、5、6、7、8、9、10]; var arr2 = arr.filter(function(x、index){return index%3 === 0 || x> = 8;}); console.log(arr2); // [1、4、7、8、9、10]13.すべて()
すべて():配列内の各アイテムが条件を満たしているかどうかを判断します。すべてのアイテムが条件を満たしている場合にのみ、返されます。
var arr = [1、2、3、4、5]; var arr2 = arr.every(function(x){return x <10;}); console.log(arr2); // truevar arr3 = arr.every(function(x){return x <3;}); console.log(arr3); // 間違い14。いくつか()
一部():条件を満たすアイテムが配列にあるかどうかを判断します。それらの1つが条件を満たしている限り、それは真実に戻ります。
var arr = [1、2、3、4、5]; var arr2 = arr.some(function(x){return x <3;}); console.log(arr2); // truevar arr3 = arr.some(function(x){return x <1;}); console.log(arr3); // 間違い15。reduce()およびreduceright()
どちらの方法でも、配列のすべてのアイテムを反復し、最終的な返品値を構築します。 Reduce()メソッドは、アレイの最初のアイテムから始まり、最後まで1つずつ通過します。 ReduceRight()は、配列の最後のアイテムから始まり、最初のアイテムに移動します。
どちらの方法も、各アイテムで呼び出される関数と(オプション)マージベースの初期値として(オプション)の2つのパラメーターを受け取ります。
関数は、()reduceright()を減少させ、reduceright()を受信して、前の値、現在の値、アイテムのインデックス、および配列オブジェクトの4つのパラメーターを受け取ります。この関数によって返される値は、最初のパラメーターとして次のアイテムに自動的に渡されます。最初の反復は配列の2番目の項で発生するため、最初のパラメーターは配列の最初の項で、2番目のパラメーターは配列の2番目の項です。
次のコードでは、Recose()を使用して配列の合計を実装し、10の初期値が最初の配列に追加されます。
var値= [1,2,3,4,5]; var sum = values.duceright(function(prev、cur、index、array){return prev + cur;}、10); console.log(sum); // 25上記は、編集者によって導入されたJavaScriptアレイメソッドの完全なコレクションです(推奨)。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!