1.for
優點:
1.可以遞增循環也可以遞減循環
2.可以使用break、continue控制是否跳出循環
let list = ['a', 'b', 'c', 'd','e']; for (var i = 0; i < list.length; i++) { console.log(list[i]) }
// a、b、c、d、e
let list = ['a', 'b', 'c', 'd', 'e']; for (var i = list.length - 1; i > 0; i--) { if (i === 0) { continue; } if (i === 2) { break; } console.log(list[i]) }
// e、d
2.while(){}
優點:沒有兼容問題,且可以使用break、continue
let list = ['a', 12, 'c', 'd', 'e', 'a']; let i = 0; while (i < list.length){ console.log(list[i]); i++ } //'a', 12, 'c', 'd', 'e', 'a'
3.do{}while()
優點:沒有兼容性問題,且可以使用break、continue
let list = ['a', 12, 'c', 'd', 'e', 'a']; let i = 0; do { console.log(list[i]) i++; } while (i < list.length) //'a', 12, 'c', 'd', 'e', 'a'
4.forEach
優點:1.函數式編程方便使用
2.返回值是undefined
缺點:1.ECMAScript 5.1 ES5 IE9支持
let list = ['a', 'b', 'c', 'd', 'e']; list.forEach((item,index,ary) => { console.log(`item:${item}----index:${index}----ary:${ary}`) })
item:a----index:0----ary:a,b,c,d,e
item:b----index:1----ary:a,b,c,d,e
item:c----index:2----ary:a,b,c,d,e
item:d----index:3----ary:a,b,c,d,e
item:e----index:4----ary:a,b,c,d,e
5.every
功能:測試數組內容是否全部通過
特點:1.[]數組大概率返回true
缺點:1.ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e']; const isPass = list.every((item,index) => { return typeof item === 'string' }) console.log(isPass) // false
6.some
功能:測試數組有一項通過則為true否則為false
特點: 空數組為false
缺點:1.ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e']; const isPass = list.some((item,index) => { return typeof item === 'boolean' }) console.log(isPass) //false
7.indexOf
功能:與findIndex一樣
缺點: ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e','a']; const result = list.indexOf('a2',2) console.log(result) // 5
8.lastIndexOf
功能:反向查找
缺點: ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e','a']; const result = list.lastIndexOf('a',2) console.log(result) //0
9.filter
功能: 過濾數組,當返回值為true時保留,無法操作原數組
缺點:ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e', 'a']; const result = list.filter((item, index) => { return typeof item === 'string' }) console.log(result) // ["a", "c", "d", "e", "a"]
10.map
功能:可以對遍歷項操作,且返回新的數組,元素組不改變
缺點:ECMAScript 5.1 ES5 IE9支持
let list = ['a', 12, 'c', 'd', 'e', 'a']; const result = list.map((item, index) => { return item + '_' }) console.log(result) // ["a_", "12_", "c_", "d_", "e_", "a_"]
11.reduce
優點:累計計算非常好用
缺點:上手難度比其他函數式編程高一些
let list = ['a', 12, 'c', 'd', 'e', 'a']; const result = list.reduce((total,prev,index,arr) => { return total + prev; },''); console.log('result',result); //a12cdea
12.for...in
缺點:雖然可以,不推薦遍歷數組,一般用來遍歷對象 畢竟key都給你輸出了
let list = ['a', 12, 'c', 'd', 'e', 'a']; for(let key in list){ console.log(list[key]); } //'a', 12, 'c', 'd', 'e', 'a'
13.find
功能:獲取數組符合條件的第一個值,如果沒有找到返回undefined
缺點: ECMAScript 2015 (6th Edition, ECMA-262) (ES6) IE不支持
,Edge 14-80支持
let list = ['a', 12, 'c', 'd', 'e'];
const result = list.find((item,index) => { return item === 'a' }) console.log(result) // a
14.findIndex
功能:獲取數組符合條件的第一個值得索引,如果沒有找到就返回-1
缺點:ECMAScript 2015 (6th Edition, ECMA-262) (ES6) IE不支持
,Edge 14-80支持
let list = ['a', 12, 'c', 'd', 'e','a']; const result = list.findIndex((item,index) => { return item === 'a' }) console.log(result) // 0
15.for...of
缺點:ECMAScript 2015 (6th Edition, ECMA-262) (ES6) IE不支持
let list = ['a', 12, 'c', 'd', 'e', 'a']; for (let s of list) { console.log(s); } //'a', 12, 'c', 'd', 'e', 'a'
16.includes
判斷數組中是否存在該值
缺點: ECMAScript 2016 (ECMA-262) IE不支持
let list = ['Jan', 'March', 'April', 'June']; const result = list.includes('Jan'); // true