1. 程式人生 > 實用技巧 >Javascript陣列迭代精髓,拿去花

Javascript陣列迭代精髓,拿去花

陣列迭代

陣列迭代是處理各陣列的利器,編寫程式碼時常常會用到,為我們提供了大大的便利。如果還不知道,真的別告訴別人你知道js哈哈。

以下迭代方法均不會改變原陣列,帶*為必選物件

1、arr.forEach(function(*cur,index,arraySelf)) 此方法為每個陣列元素呼叫一次函式(回撥函式)

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(cur, index, array) {
txt = txt + cur;
}
console.log(txt) //返回:45491625

2、arr.map(function(*cur,index,arrSelf))對每個陣列元素執行函式來建立新陣列,不會對沒有值的陣列元素執行函式

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
console.log(number2) //返回[90,8,18,32,50]

3、arr.filter(function(*cur,index,arrSelf)) 建立一個包含通過測試的陣列元素
的新陣列

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(over18); //返回[45,25]

4、arr.reduce(function(prev,cur,index,arrSelf),[initialValue]) 從左到右為每一個陣列元素執行函式,並縮減陣列的元素(不是改變原陣列),最終計算為一個值,initialValue為初始值,沒設定預設陣列第一個元素為初始值,然後函式從陣列第二個元素開始執行

var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(*prev,*cur, index, arrSelf) {
console.log(prev, cur, index); //返回1,3,1
return prev + cur; //返回10
})
console.log(arr, sum); //這裡沒有設定初始值,預設為第一個元素1,最後返回**[1,2,3,4] 10 **,若設定初始值為10,則最後sum值為20

arr.every(function(*cur,index,arrSelf)) 檢查所有陣列值是否通過測試,如全部通過返回true,否則返回false

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(allOver18); //返回false

arr.some(function(*cur,index,arrSelf)) 檢查是否存在陣列值通過測試,如存在返回true,否則返回false

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
console.log(allOver18); //返回true

arr.find(function(*cur,index,arrSelf)) 返回通過測試函式的第一個陣列元素的值

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction); function myFunction(value, index, array) {
return value > 18;
}
console.log(first); //返回25

以上對各方法的解釋和例子參考w3cschool:https://www.w3school.com.cn/js/js_array_iteration.asp

如有不正確,歡迎指出改正