js for、foreach、for in、for of的区

開発では、配列またはオブジェクト、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は通常トラバースに使用されます。オブジェクト、その他はトラバーサル配列です

おすすめ

転載: blog.csdn.net/weixin_43169949/article/details/102750920