JavaScript における Array 型の配列のメソッド

配列型

ECMAScript 配列の特別な点は、

1. 配列の各項目には任意のデータ型を格納できます

2. 配列の長さは動的に調整でき、新しいデータに対応するためにデータの追加に応じて自動的に拡張されます。

配列の作成方法

1.コンストラクターを使用する

var arr = 新しい配列()

var arr = new Array(20)//初期の長さは 20 です

var arr = new Array("1")//初期長 1

var arr = 新しい配列(“1”,1,2)

新しい演算子は効果を変えずに省略できます。
2. 配列リテラル

var arr = []

オブジェクトと同様、リテラルを使用してもコンストラクター new Array() は呼び出されません。

配列の長さプロパティ

配列の長さ属性は非常に特徴的です ----- 読み取り専用ではありません

この機能により、配列の末尾に要素を追加または削除できます (長さの値を変更します)。

配列の特定の位置に値を追加すると、代入されていない位置も存在し、値は不定になります

検出アレイ

arr instanceof Array 演算子を使用して配列であるかどうかを検出する場合の問題は、グローバル実行環境が 1 つだけであると想定していることです。Web ページに複数のフレームが含まれている場合、実際には 3 つ以上の異なるグローバル実行環境が存在するため、Array コンストラクタのバージョンが 3 つ以上あります。配列があるフレームから別のフレームに渡される場合、渡された配列と 2 番目のフレームでネイティブに作成された配列には、独自の異なるコンストラクタがあります。配列であるかどうか、どのグローバル実行環境で作成されたかは関係ありません

配列変換

すべてのオブジェクトには toLocalString()、toString()、valueof() メソッドがあります。

配列は toString() メソッドを呼び出して、カンマ区切りの文字列を返します。

配列は valueof() メソッドを呼び出して配列を返します。

join()方法

配列は join() メソッドを呼び出し、指定された区切り文字で結合された配列文字列を返します。

join メソッドは 1 つのパラメータのみ受け入れます join("delimiter")

配列内の項目の値が null または未定義の場合、toLocalString()、toString()、valueof()、join() メソッドの項目によって返される結果は空の文字列 "" になります。

スタックメソッド

Push() は、任意の数のパラメータを受け取り、それらを配列の末尾に 1 つずつ追加し、配列の変更された長さを返します。

Pop() メソッドは、配列の最後の項目を削除し、配列の長さを減らし、削除された項目を返します。

キューメソッド

unshift() は任意の数のパラメータを受け取り、それらを配列の先頭に追加し、配列の変更された長さを返します。

SHIFT() メソッドは、配列の最初の項目を削除し、配列の長さを減らし、削除された項目を返します。

Pop() メソッドと SHIFT() メソッドを組み合わせると、配列をキューのように使用できるようになります。

並べ替え方法

reverse() は反転した配列を返します

sort() はデフォルトで昇順にソートし、ソートされた配列を返します。

sort() メソッドは、配列内の各項目の toString() 変換メソッドを呼び出し、取得した文字列を比較して並べ替え方法を決定します。配列項目の値が数値型であっても、比較は文字列でもあります。この並べ替え方法では、並べ替えエラーが発生することがあります。たとえば、昇順では 10 が 5 の前にランク付けされます。多くの場合、この並べ替え方法は最適な解決策ではありません。したがって、
sort() メソッドは比較関数をパラメータとして受け取ることができます。比較関数は 2 つのパラメータを受け取ります。降順で並べ替える場合は num2 ~ num1 を返し、昇順で並べ替える場合は num1 ~ num2 を返します。比較関数は正または負の数値または 0 を返すことで並べ替え結果に影響を与えるため、減算が非常に適しています。

操作方法

concat()

concat()

現在の配列内のすべての項目に基づいて新しい配列を作成します。つまり、このメソッドはまず現在の配列のコピー (新しい配列) を作成し、次に新しい配列の末尾にパラメーターを追加し、最後に新しい配列を返します。パラメータが渡されない場合、配列はコピーされます。渡されたパラメーターが 1 つ以上の配列である場合、メソッドはそれらのパラメーター配列の各項目を新しい配列に追加します。渡されたパラメータが配列でない場合は、新しい配列の末尾に追加されます。

スライス()インターセプト

スライス()インターセプト

このメソッドは、現在の配列内の 1 つ以上の項目に基づいて新しい配列を作成できます。

インターセプトには、開始位置と終了位置 (終了位置は含まれません) の 1 つまたは 2 つのパラメーターが必要です。パラメータが 1 つだけの場合は、開始位置から終了位置までのすべての項目がインターセプトされます。

パラメータに負の数値がある場合は、配列の長さにパラメータの結果を加えたものを実際のパラメータとして使用します。たとえば、配列の長さが 5 の場合、スライス(-2,-1) はスライス(3,4) と同じ効果があります。終了位置が開始位置より小さい場合は、空の配列が返されます。

スプライス()

splice() 配列の最も強力なメソッドで、削除、追加、置換が可能です。

削除の実現: 2 つのパラメータを指定します。パラメータ 1: 開始位置パラメータ 2: 削除する項目の数 (最初の 2 つの項目を削除する場合は splice(0,2) など)

**追加を実現する: **3 つのパラメータを指定します。パラメータ 1: 開始位置パラメータ 2: 0 (削除する項目の数を表し、0 は挿入のみで削除はしないことを意味します) パラメータ 3: 追加する項目 (追加する項目が複数ある場合は、複数の項目を渡し続けることができます) など、splice(1,0,"22", "99") のように配列の添字 1 から項目を追加します。

** 置換の実現: ** 指定した位置から任意の数の項目を追加し、同時に任意の数の項目を削除するには、3 つのパラメータを指定する必要があります。パラメータ 1: 開始位置パラメータ 2: 削除する項目の数パラメータ 3: 挿入する項目の任意の数。挿入された項目の数は、削除された項目の数と同じである必要はありません。たとえば、 splice(2,1,"k",'l') は、配列の位置 2 にある項目を削除し、位置 2 から新しい要素を挿入します。

splice() メソッドは常に、削除された項目を含む新しい配列を返します。何も削除されなかった場合は空の配列を返します。

ロケーションメソッド

IndexOf(検索する項目, [開始位置]) 前から後ろに検索し、検索された要素のインデックスを返します。見つからない場合は -1 を返します

lastIndexOf (検索対象の項目, [開始位置]) 後ろから前に向かって検索し、検索された要素のインデックスを返します。見つからない場合は -1 を返します

検索された要素と配列内の各項目を比較する場合、最下層は === 合同演算子を使用します。

反復法

ECMAScript では配列に対して 5 つの反復メソッドが定義されており、これらのメソッドは 2 つのパラメーターを受け取る必要があります。パラメータ 1: 各項目に対して実行する関数; パラメータ 2 (オプション): 関数を実行するスコープ オブジェクト - この値に影響します。パラメーター 1 の関数は、配列アイテム、インデックス、配列オブジェクト自体の値である 3 つのパラメーター (アイテム、インデックス、配列) を受け取る必要があります。

Every(): 配列の各項目に対して指定された関数を実行し、各項目が true を返す場合、結果は true になります。

filter(): 配列の各項目に対して指定された関数を実行し、結果が true である項目の配列を返します。

forEach(): 配列の各項目に対して指定された関数を戻り値なしで実行します。基本的に for ループを使用して配列を反復するのと同じです。

map(): 配列の各項目に対して指定された関数を実行し、関数が呼び出されるたびに取得された結果の配列を返します。

some(): 配列の各項目に対して指定された関数を実行します。いずれかの項目が true を返した場合、結果は true になります。

上記のいずれの方法でも、元の配列の値は変更されません。
使用例
var numbers = [1,2,3,4,5,4,3,2,1]
var everyResult = numbers.every(function(item,index,array){
    
    
 return (item>2)
})
console.log(everyResult);//false


var someResult = numbers.some(function(item,index,array){
    
    
 return (item>2)
})
console.log(someResult);//true


var filterReslt = numbers.filter(function(item,index,array){
    
    
 return (item>2)
})
console.log(filterReslt);//Array(5) [ 3, 4, 5, 4, 3 ]


var mapReslt = numbers.map(function(item,index,array){
    
    
 return (item*2)
})
console.log(mapReslt);//Array(9) [ 2, 4, 6, 8, 10, 8, 6, 4, 2 ]


numbers.forEach(function(item,index,array){
    
    
   //数组的每一项执行某些操作,本质与使用for循环一样
   console.log(item);
 })

マージ方法

reduce() は配列の先頭から最後の項目までを繰り返します。

reduceRight() 配列の最後の項目から最初の項目までを繰り返します。

これらのメソッドは両方とも、配列内のすべての項目を反復処理して、最終的な戻り値を構築します。これらはすべて 2 つのパラメータ、パラメータ 1 (オプション): 各項目で呼び出す関数、パラメータ 2 (オプション): マージ ベースの初期値を受け取ります。パラメーター 1 の関数は、前の値、現在の値、項目のインデックス、および配列オブジェクトの 4 つのパラメーターを受け取ります。この関数の戻り値は、次回関数を実行するときに関数のパラメータ 1 として自動的に次の項目に渡されます。
最初の反復は配列の 2 番目の項目で発生するため、パラメータ 1 は添字 0 の項目、パラメータ 2 は添字 1 の項目、

Reduce() と ReduceRight() のどちらを使用するかは、配列のどちら側で走査を開始するかによって決まります。それ以外の場合、2 つのメソッドの間に違いはありません。

使用例
//数组求和
var numbers = [1,2,3,4,5,4,3,2,1]
var reduceResult = numbers.reduce(function(pre,cur,index,array){
    
    
  return (pre+cur)
 })
 console.log(reduceResult);//25
//reduceRight() 作用相似,只不过方向相反

おすすめ

転載: blog.csdn.net/m0_48895748/article/details/127419942