001 Arayタイプ
6872 ワード
この本はJavaScriptプログラミングの聖書とも言われています.また、紅宝書とも言われています.この本を覚えているのは、先のほうでサイの本と一緒に買いました.その間にとぎれとぎれにひっくり返しました.ほとんどが灰に落ちています.この本はとても経典的で、JavaScriptのプログラミングの方面についてほぼすべて述べました.もし一回通読できるなら、文書をめくったり資料を調べたりする時間を省きます.この本の内容もとても豊富です.だから、専門的に文集を作って、本のノートを読みます.
判定配列
判断配列については、ここで2つの方法をまとめます.1.
配列の
スタック/キューの方法
配列を用いてスタックまたはキューデータ構造をシミュレートすることができます.スタック方法:
1.戻り値が0以下、昇順 の戻り値は0より大きく、降順は です.の戻り値は0に等しく、この2つのパラメータが等しいことを示し、パラメータ順序に従って を並べ替える.
操作方法
1.引数なし:現在の配列のコピーを返します. パラメータは、1つ以上の変数、配列:現在の配列とパラメータ要素を統合し、統合された配列 を返します.
配列がパラメータに含まれている場合は、この配列を分解して、新しい配列に結合します.開始位置:切り取り配列時の開始位置は、負の値とすることができます.オプションで、デフォルトは0 です.終了位置:切り取り配列時の終了位置は、負の値とすることができます.オプションとして、デフォルトは配列の長さ です.要素の開始位置 を削除する.削除要素の個数 削除された要素からなる配列を返します.挿入の開始位置 0(要素を削除しないことを示す) に挿入された要素シーケンスは、複数の であることができる.
要素が削除されていないので、この方法を呼び出して空の配列を返します.
配列には2つの位置方法があります.
反復方法
配列にはいくつかの反復法があり、配列内部の要素をいくつかの反復操作するために用いられています.これらの方法はいずれもパラメータとして関数を受け入れています.反復するたびにこの関数を実行します.関数のパラメータは、値、位置、元の配列1.
配列には、2つの正規化方法がある.前の値 の後の値 現在のインデックス 元配列オブジェクト 反復の間、関数の戻り値は、次の反復の関数に最初のパラメータとして入ってきて、最終的には最終的な値を返します.最初の反復では、前のパラメータと後のパラメータは、それぞれ配列の最初の要素と第二の要素である.
終わります.
判定配列
判断配列については、ここで2つの方法をまとめます.1.
Object
プロトタイプチェーン上のtoString
方法を用いて判断します.function isArray(arr){
return Object.prototype.toString.call(arr).indexOf("Array") !== -1
}
isArray([]) // true
isArray({}) // false
2.Array
オブジェクト上原生のisArray
方法を使用する:Array.isArray([]) //true
Array.isArray({}) //false
配列のtoString
方法配列の
toString
方法を呼び出して、順番に配列の各項目のtoString
方法を呼び出して、リターン値をカンマでスティッチングします.const arr = [{a:1},[],1,2,"hello"]
arr.toString() // "[object Object],,1,2,hello"
同じように、配列のtoLocaleString
およびvalueOf
方法を呼び出すときも、配列の各要素のtoLocaleString
またはvalueOf
方法を順次呼び出し、コンマを用いてスティッチングする.また、配列の各要素のtoString
方法を変更して、デフォルトの結果を置き換えることもできます.let ele1 = {
name:"ele1",
toString(){
return " "
}
}
let ele2 = {
name:"ele2",
toString(){
return " "
}
}
const arr = [ele1,ele2]
arr.toString() //" , "
配列のtoLocaleString
およびvalueOf
方法についても同様に適用される.スタック/キューの方法
配列を用いてスタックまたはキューデータ構造をシミュレートすることができます.スタック方法:
push
及びpop
:let arr = []
arr.push(1,2)
arr.pop() //2
arr.pop() //1
列に対する方法:push
およびshift
:let arr = []
arr.push(1,2)
arr.shift() //1
arr.shift() //2
逆行列:unshift
およびpop
:let arr = []
arr.unshift(1,2)
arr.pop() //2
arr.pop() //1
ソート方法1.
reverse
方法:配列を反転するための方法.let arr = [1,2,3]
arr.reverse() // [3,2,1]
2.sort
方法は、配列を並べ替えるために使用され、デフォルトでは昇順に並べ替えられ、順序付け時に要素のtoString
によって位置比較を行う.したがって、次の順序は私たちが望んだ結果ではないかもしれません.let arr = [1,2,10,3,20]
arr.sort() //[1,10,2,20,3]
これに加えて、sort
方法は、パラメータとして関数を受け入れ、順序付け規則をカスタマイズすることができる.このパラメータ関数は、2つの比較対象の要素をパラメータとして受け入れ、関数の戻り値は、この2つの要素の並べ替えを決定します.let arr = [1,2,10,20,3]
arr.sort((prev,next) => prev - next) // [1, 2, 3, 10, 20]
以上の方法は、要素のvalueOf
方法で数値を返す場合(または数値に暗黙的に変換することができる)に適用される.要素のvalueOf
方法で戻ってきたのが数値ではない場合(または暗黙的に数値に変換できる場合)、私達は手動で判断してから戻ります.let arr = [{val:1},{val:2},{val:10},{val:20},{val:3}]
arr.sort((prev,next) => {
return prev.val - next.val
}) // [{val:1},{val:2},{val:3},{val:10},{val:20}]
reverse
およびsort
の方法は、元の配列において修正される.操作方法
1.
concat
方法この方法は、配列結合を行うために用いられ、許容されるパラメータは以下の通りである.配列がパラメータに含まれている場合は、この配列を分解して、新しい配列に結合します.
[].concat(1,2,[3,[4,5]]) //[1,2,3,[4,5]]
この方法は元の配列を変更しません.2.slice
方法は、元の配列から要素の一部を切り取り、これらの要素に基づいて新たな配列を作成する方法である.slice
方法のパラメータ:slice
のパラメータがマイナスの場合、このパラメータと配列長の和は実際の切り取り時の启示/終了位置であり、終了位置(計算された変換後)が開始位置(計算された変換後)より小さい場合には、空の配列に戻る.[1,2,3].slice() //[1,2,3]
[1,2,3].slice(1) //[2,3]
[1,2,3].slice(-2,-1) //[2]
[1,2,3].slice(-1,-2) //[]
...
slice
方法は、元の配列を変更しない.3.splice
方法は、配列要素を削除、挿入、置換するために使用できる強力な方法である.この方法は元の配列を変更します.1)要素削除splice
を使用して配列要素を削除するには2つのパラメータが必要です.let arr = [1,2,3]
arr.splice(0,1) //[1]
arr //[2,3]
2)要素を挿入するsplice
方法で要素を挿入するには少なくとも3つのパラメータが必要である.要素が削除されていないので、この方法を呼び出して空の配列を返します.
let arr = [1,2,3]
arr.splice(0,0,"memeda","heheda") //[]
arr // ["memeda", "heheda", 1, 2, 3]
3)代替要素がsplice
を使用して要素を置換する原理は、まず要素を削除し、その位置において置換し、置換時に複数の要素シーケンスを使用することができる.let arr = [1,2,3]
arr.splice(1,1,"memeda","heheda") //[2]
arr //[1, "memeda", "heheda", 3]
位置について配列には2つの位置方法があります.
indexOf
とlastIndexOf
という方法は、配列内の要素の位置を調べるために用いられます.indexOf
は、配列の先頭から探し始め、最初の一致する要素が見つかったら停止し、もし要素にマッチしていないなら、-1に戻り、lastIndexOf
は、配列の最後から探し始め、マッチング方式は類似している.indexOf
とlastIndexOf
とが要素に一致するときは厳密に等しい(==)が要求されることに留意されたい.さらに、この2つの方法は、開始位置と終了位置の2つのパラメータ(オプション)を受け入れて、検索の位置を表してもよい.let person = {name:"MIKE"}
let arr1 = [{name:"MIKE"}]
let arr2 = [person]
arr1.indexOf(person) //-1
arr2.indexOf(person) //0
indexOf
およびlastIndexOf
の方法を使用して要素に適合する場合は厳密に等しいことが要求されるので、arr1
配列はperson
オブジェクトに一致しない.反復方法
配列にはいくつかの反復法があり、配列内部の要素をいくつかの反復操作するために用いられています.これらの方法はいずれもパラメータとして関数を受け入れています.反復するたびにこの関数を実行します.関数のパラメータは、値、位置、元の配列1.
every
方法であり、この方法は、配列の各項目を反復するために用いられ、関数が各要素をtrue
に返すと、every
の戻り値はtrue
である.[1,2,3].every((v)=> v>0) //true
[1,2,3].every((v)=> v>1) //false
2.some
方法は、方法およびevery
と同様であるが、各要素に対して関数がtrue
に戻ることは要求されない.反復時に1つの要素がある限り、true
に戻り、some
方法はtrue
に戻る.true
であれば、every
の戻り値はtrue
である.[1,2,3].some((v)=> v>0) //true
[1,2,3].some((v)=> v>1) //true
3.filter
方法この方法は、配列の各項目をフィルタリングし、要求に合致する要素リストを返すために使用される.[1,2,3].filter(v=>v%2) //[1,2]
4.forEach
方法は、通常のfor
サイクルと同様に、行列の各項目を動作させるために使用される.[1,2,3].forEach(v=>{ console.log(v) }) // 1,2,3
5.map
方法は、配列の各項目を動作させ、動作の結果を新しい配列にマッピングする方法である.[1,2,3].map(v=>v*2) //[2,4,6]
統合方法配列には、2つの正規化方法がある.
reduce
とreduceRight
.これらの2つの方法は、配列の各項目を反復し、最終的な戻り値を構築する.4つのパラメータを受け入れることができます.reduceRight
は、配列の終端から始まり、他のreduce
と一致する.//
[1,2,3,4,5].reduce((prev,next) => prev * next) //120
[1,2,3,4,5].reduceRight((prev,next) => prev + next) //15
配列要素のアキュムレータ、累積などの動作に関わる場合、この2つの方法は使いやすいです.終わります.