Array.forEach()
forEach() 方法為每個數(shù)組元素調(diào)用一次函數(shù)(回調(diào)函數(shù))。
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value) {
txt = txt + value + "<br>";
}
Array.map()
map() 方法通過對每個數(shù)組元素執(zhí)行函數(shù)來創(chuàng)建新數(shù)組。
map() 方法不會對沒有值的數(shù)組元素執(zhí)行函數(shù)。
map() 方法不會更改原始數(shù)組已烤。
這個例子將每個數(shù)組值乘以2:
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
console.log(numbers2 ); //90,8,18,32,50
請注意,該函數(shù)有 3 個參數(shù):
項(xiàng)目值
項(xiàng)目索引
數(shù)組本身
當(dāng)回調(diào)函數(shù)僅使用 value 參數(shù)時,可以省略索引和數(shù)組參數(shù):
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value) {
return value * 2;
}
Array.filter()
filter() 方法創(chuàng)建一個包含通過測試的數(shù)組元素的新數(shù)組际邻。
這個例子用值大于 18 的元素創(chuàng)建一個新數(shù)組:
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
請注意此函數(shù)接受 3 個參數(shù):
項(xiàng)目值
項(xiàng)目索引
數(shù)組本身
在上面的例子中,回調(diào)函數(shù)不使用 index 和 array 參數(shù)芍阎,因此可以省略它們:
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value) {
return value > 18;
}
Array.reduce()/Array.reduceRight()
reduce()/reduceRight() 方法在每個數(shù)組元素上運(yùn)行函數(shù)世曾,以生成(減少它)單個值。
reduce()/reduceRight() 方法不會減少原始數(shù)組谴咸。
這個例子確定數(shù)組中所有數(shù)字的總和:
//reduce() 方法能夠接受一個初始值:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);
function myFunction(total, value) {
return total + value;
}
//sum=199
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);
function myFunction(total, value) {
return total + value;
}
//sum=99
Array.every()
every() 方法檢查所有數(shù)組值是否通過測試轮听。
這個例子檢查所有數(shù)組值是否大于 18:
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value) {
return value > 18;
}
//返回false
Array.some()
some() 方法檢查某些數(shù)組值是否通過了測試。
這個例子檢查某些數(shù)組值是否大于 18:
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
//返回true
//請注意此函數(shù)接受 3 個參數(shù):項(xiàng)目值,項(xiàng)目索引,數(shù)組本身
Array.indexOf()
indexOf() 方法在數(shù)組中搜索元素值并返回其位置岭佳。
注釋:第一個項(xiàng)目的位置是 0血巍,第二個項(xiàng)目的位置是 1,以此類推珊随。
//檢索數(shù)組中的項(xiàng)目 "Apple":
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
//Apple 被找到的位置是:1
如果未找到項(xiàng)目述寡,Array.indexOf() 返回 -1。
如果項(xiàng)目多次出現(xiàn)叶洞,則返回第一次出現(xiàn)的位置辨赐。
Array.lastIndexOf()
Array.lastIndexOf() 與 Array.indexOf() 類似,但是從數(shù)組結(jié)尾開始搜索京办。
//檢索數(shù)組中的項(xiàng)目 "Apple":
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
Array.find()
find() 方法返回通過測試函數(shù)的第一個數(shù)組元素的值掀序。
這個例子查找(返回)大于 18 的第一個元素的值:
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
//大于 18 的第一個值是:25
//3 個參數(shù):項(xiàng)目值,項(xiàng)目索引,數(shù)組本身
Array.findIndex()
findIndex() 方法返回通過測試函數(shù)的第一個數(shù)組元素的索引。
這個例子查找大于 18 的第一個元素的索引:
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
//大于 18 的第一個值的索引是:3