開発では、配列またはオブジェクト、for、foreach、for in、for ofなどの一般的に使用されるメソッドをトラバースすることが多いため、今日はこれらのメソッドの使用法について説明します
。1。forループ:
forループはIn thearrayでよく使用されます。、使い方もとても簡単です
for(let i=0,len=array.length;i<len;++i){
console.log(array[i])
}
このようにして、配列内の各アイテムをトラバース
でき、ループはブレークまたはリターンで終了できます。なぜオブジェクトをトラバースできないのですか?明らかに、オブジェクトには長さプロパティがありません。
2. Foreachループ:
array.foreach((item,index)=>{
console.log(item,index)
)}
書き込み方法はforよりも簡潔ですが、forとの最大の違いは、breakまたはreturnを使用してループからジャンプできないことです。ループからジャンプする必要がある場合は、try ... catchを使用する必要があります。 ....。
try{
array.foreach((item,index)=>{
if(some===item){
throw error
}
)}
}catch(error){
}
3.for inは通常、オブジェクトをトラバースするために使用されます
const obj={
a:1,b:2}
for(let key in obj){
console.log(key ,obj[key]) //a ,1 b ,2
}
もちろん、オブジェクト自体のプロパティをトラバースすることに加えて、オブジェクトプロトタイプのプロパティをトラバースすることもできます。次に例を示します。
const obj={
a:1,b:2}
obj.prototype.c=3;
for(let key in obj){
console.log(key ,obj[key]) //a,1 b,2 c,3
}
しかし、これを使用して配列をトラバースするとどうなるでしょうか。
const array=[1,2,3,4]
for(let key in array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4
}
配列も本質的にオブジェクトであるため、配列にもプロトタイプがあります。たとえば、配列のプロトタイプに属性も追加するとします。
const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key in array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4 addPrototype,5
}
4. for ofプロトタイプのメソッドまたは属性が配列に追加されたときに、プロトタイプのメソッドをトラバースしたくない場合、ES6は、主にforinの欠陥を補うためにそのようなメソッドを提供します。
const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key of array){
console.log(key ,array[key]) //0,1 1,2 2,3 3,4
}
ただし、forを使用してオブジェクトを直接トラバースすることはできません。そうしないと、「obj is not iterable」と報告されます。これを使用してオブジェクトをトラバースする場合は、Object.keys()メソッドを使用する必要があります。
const obj={
a:1,b:2}
for(let key of Object.keys(obj)){
console.log(key)
}
要約:
1。最も強力な関数はfor inで、配列とオブジェクトをトラバースできます
。2。foreachがbreakまたはreturnを使用してループからジャンプできないことを除いて、他のすべては
問題ありません。3。forinは通常トラバースに使用されます。オブジェクト、その他はトラバーサル配列です