javascript數組的16種循環(包含ES5、ES6)


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM