forEach,Object.keys,map,for in ,for of,reduce,every
-
forEach 用於遍歷【數組】
data.forEach(( item, index ) => { console.log('元素:', item ,';下標:', index) })
-
Object.keys() 和 forEach() 結合遍歷【對象】
// Object.keys返回一個數組,數組元素是輸入對象所有的鍵名的集合 Object.keys(testData).forEach((key)=>{ console.log(key) //鍵 console.log(testData[key]) //值 })
注意:Object.keys出來的順序不一定是對象屬性原來的順序,順序和for..in相同。
另外Object.keys還有一個妙用就是獲取對象的長度,在js中數組長度可用length得到,對象長度用length獲取的結果是undefined,使用Object.keys(obj).length就可以得到對象長度了。
-
for...of (es6)用於遍歷【數組】內的【元素】,不包括原型屬性和索引名
let myArray = [1,2,4,11,6,7] for (let value of myArray) { console.log(value) //一次輸出元素1、2、4、11、6、7 }
-
for...in (es5)用於遍歷【對象/數組】內的【鍵名】,包括原型屬性 (所以慎用!)
let myArray = ['a',123,{a:'1',b:'2'}] //或為對象myArray = {a:'1',b:'2'} for(let index in myArray){ console.log(index,myArray[index]) //輸出鍵名 和 元素值 } // 注意1:for..in會把某個類型的原型(prototype)中的方法與屬性遍歷出來 // 不想遍歷原型方法和屬性的話,可以在循環內部使用hasOwnPropery方法可以判斷某屬性是否是該對象的實例屬性 if(!array.hasOwnProperty(i)){ continue; } // 注意2:for..in遍歷對象{}時出來的順序不一定是對象屬性原來的順序,順序和Object.keys相同。