在數(shù)組中的每個元素上一次操作的方法,稱為迭代方法。
數(shù)組的迭代方法與循環(huán)緊密相關(guān)。
forEach()方法對數(shù)組的每個元素執(zhí)行一次提供的函數(shù)(一個回調(diào)函數(shù))。
我們可以使用forEach()將數(shù)組中的每個元素打印到文檔。
var fruits = ["Apple", "Mango", "Banana", "Orange"]; var result = document.getElementById("result"); fruits.forEach(function(element, index, array) { result.innerHTML += index + ": " + element + "<br>"; });測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
由于2個參數(shù)(索引,數(shù)組)是可選的,因此我們可以跳過它們:
var fruits = ["Apple", "Mango", "Banana", "Orange"]; var result = document.getElementById("result"); fruits.forEach(function(element) { result.innerHTML += element + "<br>"; });測試看看?/?
map()方法返回一個新數(shù)組,不會改變原始數(shù)組。同時新數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值,并按照原始數(shù)組元素順序依次處理元素。
注意:map() 不會對空數(shù)組進行檢測。
以下示例從每個值乘以2的元素創(chuàng)建一個新數(shù)組:
var nums1 = [1, 5, 20, 14, 55, 16]; var nums2 = nums1.map(twice); function twice(element, index, array) { return (element * 2); }測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
由于2個參數(shù)(索引,數(shù)組)是可選的,因此我們可以跳過它們:
var nums1 = [1, 5, 20, 14, 55, 16]; var nums2 = nums1.map(twice); function twice(element) { return (element * 2); }測試看看?/?
filter()是JavaScript中Array的常用操作,用于把Array的某些元素過濾掉,然后返回剩下的元素。其主要原理是 filter會把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是 true 還是false決定保留還是丟棄該元素。
下面的示例,使用值等于或大于18的元素創(chuàng)建一個新數(shù)組:
var age = [1, 30, 39, 29, 10, 13]; var val = age.filter(isAdult); function isAdult(element, index, array) { return element >= 18; }測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
由于2個參數(shù)(索引,數(shù)組)是可選的,因此我們可以跳過它們:
var age = [1, 30, 39, 29, 10, 13]; var val = age.filter(isAdult); function isAdult(element) { return element >= 18; }測試看看?/?
reduce()方法接收一個函數(shù)作為累加器,數(shù)組中的每個值(從左到右)開始縮減,最終計算為一個值。
這在數(shù)字中很常見,例如找到數(shù)組中所有數(shù)字的總和。
var nums = [10, 20, 30, 40, 50]; var sum = nums.reduce(getTotal); function getTotal(x, y) { return (x + y); }測試看看?/?
請注意,該函數(shù)采用4個參數(shù):
初始值/先前返回的值(必填)
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
find()方法返回通過給定檢測的數(shù)組中的第一個值。
在下面的示例中,我們將找到等于或大于18的第一個元素:
var num = [1, 30, 39, 29, 10, 13]; var val = num.find(myFunc); function myFunc(element) { return element >= 18; }測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
findIndex()方法返回通過給定檢測的數(shù)組中的第一個索引值。
在以下示例中,我們將找到等于或大于18的第一個元素的索引值:
var num = [1, 30, 39, 29, 10, 13]; var val = num.findIndex(myFunc); function myFunc(element) { return element >= 18; }測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
every()方法用于檢測數(shù)組所有元素是否都符合指定條件(通過函數(shù)提供檢測)。
下面的示例檢查所有數(shù)組值是否等于或大于18:
var nums = [1, 30, 39, 29, 10, 13]; var bool = nums.every(function (element) { return element >= 18; }); document.getElementById("result").innerHTML = bool;測試看看?/?
請注意,該函數(shù)帶有3個參數(shù):
元素值(必填)
元素索引(可選)
數(shù)組本身(可選)
有關(guān)完整的屬性和方法參考,請訪問我們的JavaScript Array 數(shù)組參考。
參考部分包含所有數(shù)組屬性和方法的描述和示例。