ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript のさまざまな配列メソッドの例のまとめ

JavaScript のさまざまな配列メソッドの例のまとめ

伊谢尔伦
伊谢尔伦オリジナル
2017-07-18 13:07:561190ブラウズ

配列メソッド

スタックメソッド: スタックは LIFO (後入れ先出し) 後入れ先出しデータ構造です。つまり、最後に追加された項目が最初に削除されます。スタックへの項目の挿入 (プッシュと呼ばれます) とスタックからの項目の削除 (ポップと呼ばれます) は、スタックの最上部でのみ発生します。

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

pop() メソッド: 配列の末尾から最後の項目を削除し、配列の長さの値を減らし、削除された項目を返します。

キューメソッド: キューは FIFO (先入れ先出し) 先入れ先出しデータ構造であり、リストの最後に項目を追加し、リストの先頭から項目を削除します。

shift(): 配列の最初の項目を削除して返しますが、配列の長さを 1 だけ減らします (キューをシミュレートするには、shift() と Push() を一緒に使用します)

unshift():配列の先頭に任意の項目を入力し、新しい配列の長さを返します (逆方向からキューをシミュレートするには、unshift() と Pop() を組み合わせます)

[注] IE7 以下の unshift() メソッドは、常に未定義を返します ): Reverse配列の順序を調べて、ソートされた配列を返します

sort(): 配列項目を昇順に並べ替えます。sort メソッドは、各配列項目の toString() メソッドを呼び出し、取得した文字列のソートを比較し、Sorted を返します。 array

[注] sort() メソッドは、どの値がどの値の前にあるかを指定するパラメータとして比較関数を受け取ることができます。比較関数は 2 つのパラメーターを受け取り、最初のパラメーターが 2 番目のパラメーターの前にある必要がある場合は負の数を返し、2 つのパラメーターが等しい場合は 0 を返し、最初のパラメーターが 2 番目のパラメーターの後にある必要がある場合は正の数を返します。 ] (使用: 例: array1.sort(compare);)

function compare(value1,value2){
 if(value1 < value2){
 return -1;
 }else if(value1 > value2){
 return 1;
 }else{
 return 0;
 }
}

数値型または valueOf() メソッドが数値型を返すオブジェクト型の場合、比較関数は次のように簡略化できます:

function compare(value1,value2){
return value2 - value1;
}

[ヒント]: 次のメソッドは次のとおりです。ランダムな配列を作成するために一般的に使用されます

function compare(){
return Math.random() - 0.5;
}

操作メソッド (切り取り、接続、挿入、削除、置換):

concat(): 現在の配列内のすべての項目に基づいて新しい配列を作成し、最初に現在の配列のコピーを作成しますarray を取得し、受け取ったパラメータをこのコピーの末尾に追加し、最後に新しく構築された配列を返します (concat() は元の配列には影響しません)

[注 1] concat() メソッドにパラメータが渡されない場合、現在の配列をコピーするだけです

[注 2] 引数が 1 つ以上の配列の場合、メソッドはそれらの配列内の各項目を結果の配列に追加します

[注 3] 渡された値が配列でない場合、値は結果の配列の末尾に単純に追加されます

e.g. var numbers = [1,2];
console.log(numbers.concat());//[1,2]
console.log(numbers.concat([5,4,3],[3,4,5],1,2));//[1,2,5,4,3,3,4,5,1,2];

slice(): 現在の配列内の 1 つ以上の項目に基づいて新しい配列を作成し、項目の開始位置と終了位置である 1 つまたは 2 つのパラメーターを受け入れます最後に新しい配列を返します(slice()は元の配列には影響しません)

[注1] パラメータがない場合は元の配列を返します

[注2] パラメータが1つしかない場合パラメータを指定すると、slice()メソッドはパラメータで指定された位置から現在の配列の末尾の全項目を返します

[注3] パラメータが2つの場合、このメソッドは開始位置から最後までの間の項目を返します位置は指定されますが、終了位置の項目は含まれません

[注4] パラメータが負の数値の場合は、配列の長さに負の数値を加えた値をパラメータとして使用します

[注5] 終了位置が小さい場合開始位置よりも空の配列が返されます

var numbers = [1,2,3,4,5];
console.log(numbers.slice());//[1,2,3,4,5]
console.log(numbers.slice(2));//[3,4,5]
console.log(numbers.slice(2,3));//[3]
console.log(numbers.slice(-3));//-3+5=2 -> [3,4,5]
console.log(numbers.slice(2,1));//[]

splice(): 元の配列が変更された配列になり、splice()は元の配列から戻り削除します 削除された項目がない場合は項目で構成される配列。 、空の配列が返されます。

[a] 削除: 2 つのパラメーターは、削除される最初の項目の位置と削除される項目の数です。

[b] 挿入: 3 つのパラメーターは開始位置です。 、0 (削除するベース)、挿入する項目

[c] 置換: 3 つのパラメータは、開始位置、削除する項目の数、挿入する項目です

[注 1]最初のパラメータが負の数の場合は、配列の長さに負の数を加えた値をパラメータとして使用します

[注 2] 第 2 パラメータが負の数の場合は、パラメータとして 0 を使用します

var numbers = [1,2,3,4,5];
    console.log(numbers.splice(0,2),numbers);//[1,2] [3,4,5]
    var numbers = [1,2,3,4,5];
    console.log(numbers.splice(1,0,11,12),numbers);//[] [1,11,12,2,3,4,5]
    var numbers = [1,2,3,4,5];
    console.log(numbers.splice(1,3,11,12),numbers);//[2,3,4] [1,11,12,5]
    var numbers = [1,2,3,4,5];
    console.log(numbers.splice(-4,3,11,12),numbers);//-4+5=1 -> [2,3,4] [1,11,12,5]
    var numbers = [1,2,3,4,5];
    console.log(numbers.splice(-4,-3,11,12),numbers);//-4+5=1 -> [] [1,11,12,2,3,4,5]

Positional メソッド (ECMAScript5) ): 2 つのパラメータ: 検索する項目、検索の開始点を示すインデックス (オプション)。配列内で最初に条件を満たす検索項目の位置を返します。見つからない場合は-1を返します(位置メソッドは元の配列には影響しません)

[注]比較する場合は合同演算子を使用します

indexOf()

lastIndexOf()

var person = {name: &#39;Nicholas&#39;};
var people = [{name: &#39;Nicholas&#39;}];
var morePeople = [person];
alert(people.indexOf(person));//-1,因为person和people[0]虽然值相同,但是是两个引用
alert(morePeople.indexOf(person));//0,因为person和morepeople[0]是同一个引用
alert(morePeople.indexOf({name: &#39;Nicholas&#39;}));//-1,因为不是同一个引用

【ヒント】条件を満たす項目のインデックス値を全て返す場合

function allIndexOf(array,value){
 var result = [];
 var pos = array.indexOf(value);
 if(pos === -1){
  return -1;
 }
 while(pos > -1){
  result.push(pos);
  pos = array.indexOf(value,pos+1);
 }
 return result;
  }
 var array = [1,2,3,3,2,1];
 console.log(allIndexOf(array,1));//[0,5]

Iterativeメソッド(ECMAScript5):各項目に対して実行する関数とスコープオブジェクトの2つのパラメータ関数を実行するには ——この値に影響を与えます (オプション)。これらのメソッドに渡される関数は、配列項目の値、配列内の項目の位置、配列オブジェクト自体の 3 つのパラメーターを受け取ります (反復メソッドは元の配列には影響しません)

every(): for配列内の各項目 各項目に対して指定された関数を実行し、関数が各項目に対して true を返す場合は true を返します。 filter(): 配列内の各項目に対して指定された関数を実行し、関数が true を返す項目の配列を返します。 (条件を満たすすべての配列項目をクエリするために一般的に使用されます)

forEach(): 配列内の各項目に対して指定された関数を実行します。このメソッドには戻り値がありません (for ループと同等)。

map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组(常用于创建包含项与另一个数组一一对应的数组)

some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true

 var numbers = [1,2,3,4,5,6,7,8,9,0];
 var sum = 0;
 var everyResult = numbers.every(function(item,index,array){
  return (item>2);
 });
 var filterResult = numbers.filter(function(item,index,array){
  return (item>2)
 });
 var forEachResult = numbers.forEach(function(item,index,array){
  sum += item;
  return (item>2)
 });
 var mapResult = numbers.map(function(item,index,array){
  return (item*2)
 }); 
 var som =  numbers.some(function(item,index,array){
  return (item>2)
 }); 
 console.log(everyResult);//false
 console.log(filterResult);//[3,4,5,6,7,8,9]
 console.log(forEachResult,sum);//undefined 45 
 console.log(mapResult);//[2,4,6,8,10,12,14,16,18,0]
 console.log(someResult);//true
 [tips] function logArray(value,index,array){
   console.log(value);
  }
  [2,5,,,,,9].forEach(logArray)//2 5 9

归并方法(ECMAScript5):迭代数组的所有项,构建一个最终返回的值。接收两个参数:一个在每一项上调用的函数、作为归并基础的初始值(可选)。传给reduce()和reduceRight()的函数接受4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上。因此,第一个参数是数组第一项,第二个参数是数组第二项(归并方法不会影响原数组)

reduce()

reduceRight()

var sum = values.reduce(function(prev,cur,index,array){
    return prev+cur;
   })
   alert(sum);//15

以上がJavaScript のさまざまな配列メソッドの例のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。