1. 程式人生 > 程式設計 >JavaScript 中的六種迴圈方法

JavaScript 中的六種迴圈方法

Javascript中的遍歷迴圈

1.for迴圈

對於數值索引的陣列來說,可以使用標準的for迴圈來遍歷值

const arr=[1,2,3,4];
for(let i=0;i<arr.length;i++){
  console.log(i);
}

2.for...in迴圈

for...in迴圈可以用來遍歷物件的可列舉屬性列表(包括原型鏈上的屬性)

const myObject={};

Object.defineProperty(myobject,"a",{
  //可列舉
	enumerable:true,value:2,})
Object.defineProperty(myobject,"b",{
  //不可列舉
	enumerable:false,})

for(let k in myObject){
  console.log(k,myObject[k])
	// a 2
}
//使用for...in迴圈是無法直接獲得屬性值的,因為它實際遍歷的是物件中的所有可列舉屬性,
//所以你需要手動獲得屬性值.

在陣列上應用for...in迴圈,不僅僅會包含所有數值索引,還會包含所有可列舉屬性.

所以最好在物件上應用for...in迴圈。如果要遍歷陣列最好使用傳統的for迴圈來遍歷.

3.for...of迴圈

1.ES6新增的for...of迴圈

const arr=[1,3];
for(let value of arr){
  console.log(value)
  //1
  //2
  //3
}

for...of迴圈首先會向所有被訪問的物件請求一個迭代器物件,然後通過呼叫迭代器物件的next()方法來遍歷所有返回值

在陣列中有內建的@@iterator,因此for...of可以直接應用在陣列上。

使用內建的@@iterator遍歷陣列

const arr=[1,3];
//獲取陣列中的iterator物件:使用ES6中的符號Symbol.iterator來獲取物件的@@iteraotr內部屬性.
//@@iterator本身不是一個迭代器,而是一個返回迭代器物件的函式。
const it=arr[Symbol.iterator]();

it.next(); //{value:1,done:false}
it.next(); //{value:2,done:false}
it.next(); //{value:3,done:false}
it.next(); //{done:true}

//呼叫迭代器的next()方法會返回形式為{value:..,done:..}的值;
//value為當前的值,done是一個布林值,表示是否還存在可以遍歷的值

2.給物件定義@@iterator

const myObject={
  a:2,b:3
}
Object.defineProperty(myObject,Symbol.iterator,{
	enumerable:false,writeable:false,configurable:true,value:function(){
    let o=this;
    let idx=0;
    //物件中的屬性陣列
    let ks=Object.keys(o);
    return{
      value:o[ks[idx++]],done:(idx>ks.length);
    }
  }
})

const it=myObject[Symbol.iterator]();
it.next(); //{value:2,done:false}
it.next(); //{done:true}


for(let value of myObject){
	console.log(value);
}
// 2
// 3

4.foreach(...)

**forEach()** 方法對陣列的每個元素執行一次給定的函式。

const arr = ['a','b','c'];
arr.forEach(element => console.log(element));
// a
// b
// c

arr.forEach(callback(currentValue [,index [,array]])[,thisArg])

5.some(...)

some()是對陣列中每一項執行給定函式,如果該函式對任一項返回true,則返回true。

var arr = [ 1,4,5,6 ]; 
 
console.log( arr.some( function( item,index,array ){ 
  console.log( 'item=' + item + ',index='+index+',array='+array ); 
  return item > 3; 
})); 
// item=1,index=0,array=1,6
// item=2,index=1,6
// item=3,index=2,6
// item=4,index=3,6
// true

6.every(...)

every()是對陣列中每一項執行給定函式,如果該函式對每一項返回true,則返回true。

var arr = [ 1,6 ]; 

console.log( arr.every( function( item,array='+array ); 
  return item > 3; 
}));
// item=1,6
// false

以上就是JavaScript 中的六種迴圈方法的詳細內容,更多關於JavaScript 迴圈的資料請關注我們其它相關文章!