1.for...in
以原始插入順序遍歷對(duì)象的可枚舉屬性,對(duì)于每個(gè)不同的屬性,語句都會(huì)被執(zhí)行。寫法:for(var variable in obj)。例子: var obj={a:1,c:3,b:2},for(var item in obj){console.log("obj."+item+"="+obj[item])},打印結(jié)果:obj.a=1,obj.c=3,obj.b=2。使用注意:for...in不一定返回的是按一定順序的索引,只能獲取鍵名,不能直接獲取鍵值,因此不應(yīng)該被用來迭代一個(gè)下表很重要的數(shù)組,適合用于遍歷對(duì)象屬性。
2.for...of
es6提供的新語法,可以用來替代數(shù)組原始的forEach方法,使用范圍包括數(shù)組、字符串、類似數(shù)組的對(duì)象(arguments對(duì)象、DOM NodeList對(duì)象)。寫法:for(let variable of obj),例子:const arr=['red','green','blue'];for(letv of arr){console.log(v); // red green blue}使用注意:for...of循環(huán)獲取的是鍵值,如果要獲取索引,可以通過數(shù)組實(shí)例的entries(鍵值對(duì)的索引)方法和keys(鍵名的索引)方法,數(shù)組的遍歷器接口只返回具有數(shù)字索引的屬相,因此不適合用來遍歷對(duì)象。
3.數(shù)組的forEach方法
es5數(shù)組對(duì)象自帶的方法,調(diào)用數(shù)組中的每個(gè)元素,并將每個(gè)元素傳給回調(diào)函數(shù)使用。寫法:[].forEach(function(value,index,array){});使用注意:在第一次調(diào)用回調(diào)函數(shù)之前,數(shù)組中的元素都已經(jīng)是確定的。
4.map()方法返回一個(gè)新數(shù)組,這個(gè)數(shù)組中的元素是原始數(shù)組中的每個(gè)元素調(diào)用回調(diào)函數(shù)之后返回的結(jié)果,按原始數(shù)組元素依次處理數(shù)組中的元素,map方法不會(huì)改變?cè)紨?shù)組。寫法:array.map(function(currentValue,index,arr), thisValue),值得注意的是要記得為每個(gè)元素指定一個(gè)獨(dú)一無二的key