抽空整理一下js中的遍歷,之前一直只用其中的for迴圈、filter、foreach等少數幾種;這次把整個遍歷給梳理一遍;另外我們常用來中斷迴圈的語句:
a、continue: 中斷本次迴圈;
b、return和break直接跳出迴圈。
1. 普通的for迴圈
let arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) { // 這裡的i是代表陣列的下標
console.log(i); //0,1,2
最簡單的一種,正常用的話也不會出現什麼問題,想中斷也可以中斷,效能上也還可以。
2. for...of...遍歷(這種遍歷支援es6)
let arr = [1, 2, 3]
for (let item of arr) {
// item代表陣列裡面的元素
console.log(item); //1,2,3
1、 這是最簡潔、最直接的遍歷陣列元素的語法
2、 這個方法避開了for-in迴圈的所有缺陷
3、 與foreach()不同的是,它可以正確響應break、continue和return語句
4、效能要好於forin,但仍然比不上普通for迴圈
3. foreach()
let arr = [1, 2, 3];
arr.foreach((item, index, arr) => {
// item為arr的元素,index為下標,arr原陣列
console.log(item);
console.log(index);
console.log(arr);
這種遍歷便捷還是挺便捷的,看起來優雅,對目標陣列的操作很人性化,要元素給元素,要下標給下標,但是當某種情況你想中斷遍歷的時候,你就會感覺它就像雞肋,食之無味,棄之可惜。由於foreach是array型自帶的,對於一些非這種型別的,無法直接使用(如nodelist),所以才有了這個變種,使用這個變種可以讓類似的陣列擁有foreach功能。而且foreach的效能也會比普通的for迴圈弱。又下面的例子我們可以看到,我們常用的return false是可以終止**繼續往下執行的,但是在foreach遍歷中,並沒有終止迴圈,所以在用foreach的時候,要考慮使用場景了。
4. some()
let arr = [1, 2, 3];
arr.some((item, index, arr) => {
// item為陣列中的元素,index為下標,arr為目標陣列
return item === 2; // true
some作為乙個用來檢測陣列是否滿足一些條件的函式存在,同樣是可以用作遍歷的函式簽名同foreach,有區別的是當任一callback返回值匹配為true則會直接返回true,如果所有的callback匹配均為false,則返回false。
some() 方法會依次執行陣列的每個元素:
5. every()
let arr = [1, 2, 3];
arr.every((item, index, arr) => {
// item為陣列中的元素,index為下標,arr為目標陣列
return item > 0; // true
return index == 0; // false
every() 方法用於檢測陣列所有元素是否都符合指定條件(通過函式提供)。
every() 方法使用指定函式檢測陣列中的所有元素:
6. for...in...遍歷
let arr = [1, 2, 3];
for (let item in arr) {
// item遍歷陣列時為陣列的下標,遍歷物件時為物件的key值
console.log(item); //0,1,2
for...in更多是用來遍歷物件,很少用來遍歷陣列, 不過 item 對應與陣列的 key值,建議不要用該方法來遍歷陣列,因為它的效率是最低的。
7. filter()
let arr = [1, 2, 3];
arr.filter((item) => {
// item為陣列當前的元素
return item > 1; // [2, 3]
filter() 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。
8. map()
let arr = [1, 2, 3];
arr.map((item) => {
console.log(item);
return item * 2;
map() 方法返回乙個新陣列,陣列中的元素為原始陣列元素呼叫函式處理後的值。
map() 方法按照原始陣列元素順序依次處理元素。
這種方式也是用的比較廣泛的,雖然用起來比較優雅,但實際效率還比不上foreach
上述簡單的介紹了各種遍歷的方法。
JS的幾種遍歷方法
原生 foreach遍歷陣列,執行內部方法 用法 foreach item,index filter 遍歷陣列然後根據內部方法判斷是否存在於新陣列中 用法 陣列a.filter item some 遍歷陣列,並執行內部函式,一項為true則停止遍歷返回true,所有都false則返回false ev...
JS陣列遍歷的幾種方式
1 for 2 for.in.var arr 1,2,3,4 for var key in arr 會跳過稀疏散組 3 for.of for var val of arr 4 foreach arr.foreach function item,index,arr 沒有返回值,函式裡依次對應為 陣列元...
簡單總結下JS中遇到的幾種遍歷方法
下面是幾種遍歷的方法,另外我們常用來中斷迴圈的語句我在這裡簡單的提一下 a continue 中斷本次迴圈 b return和break直接跳出迴圈。var arr 1,2,3 for var i 0,len arr.length i len i 使用臨時變數,將長度快取起來,避免重複獲取陣列長度,...