JavaScript學習:JavaScript數組迭代方法

數組迭代方法對每個數組項進行操作
一、forEach()方法爲每個數組元素調用一次函數(回調函數)forEach是循環遍歷一遍數組的每一項,這個是沒有返回值的,這個方法裏面有個回調函數,回調函數有三個參數,第一個是數組每一項的值value,第二個參數是數組每一項對應的下標索引index,array是數組本身。
例:
var txt = “”;
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) {
txt = txt + value + “
”;
}
上面的例子只用了 value 參數。這個例子可以重新寫爲:
var txt = “”;
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value) {
txt = txt + value + “
”;
}
所有瀏覽器都支持forEach()方法,除了IE8或更早的版本
二、map()方法通過對每個數組元素執行函數來創建新數組,不會對沒有值的數組元素執行函數,不會更改原始數組。
例(將每個數組值乘以2):
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
如果只需要數組的值,可以省略index、array
所有瀏覽器都支持map()方法,除了IE8或更早的版本
三、filter() 方法創建一個包含通過測試的數組元素的新數組。filter是過濾、篩選的意思。
例(用值大於 18 的元素創建一個新數組):
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
//45,25
同樣的,如果只需要數組的值,可以省略index、array
所有瀏覽器都支持filter()方法,除了IE8或更早的版本
四、reduce()方法在每個數組元素上運行函數,以生成(減少它)單個值,在數組中從左到右工作,不會減少原始數組。
例(確定數組中所有數字的總和):
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
function myFunction(total, value, index, array) {
return total + value;
}//總和是 99
請注意此函數接受 4 個參數:
total總數(初始值/先前返回的值)
value項目值
index項目索引
array數組本身
上例並未使用 index 和 array 參數,可以將它去掉。
reduce() 方法能夠接受一個初始值
例:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);
function myFunction(total, value) {
return total + value;
}//總和是 199
所有瀏覽器都支持 reduce()方法,除了 IE8 或更早的版本
五、reduceRight()方法在每個數組元素上運行函數,以生成(減少它)單個值,數組中從右向左工作,不會減少原始數組。
與reduce()方法類似。
所有瀏覽器都支持 reduceRight()方法,除了 IE8 或更早的版本
六、every()方法檢查所有數組值是否通過測試。
例(檢查所有數組值是否大於 18):
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//false
三個參數,僅調用第一個,其他兩個可以省略。
所有瀏覽器都支持every()方法,除了IE8或更早版本
七、some()方法檢查某些數組值是否通過了測試。
例(檢查某些數組值是否大於 18):
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//true
三個參數,僅調用第一個,其他兩個可以省略。
所有瀏覽器都支持some()方法,除了IE8或更早版本
八、indexOf()方法在數組中搜索元素值並返回其位置。
**注:**第一個項目的位置是 0,第二個項目的位置是 1,以此類推。
例(檢索數組中的項目“Apple”):
var fruits = [“Apple”, “Orange”, “Apple”, “Mango”];
var a = fruits.indexOf(“Apple”);
語法:
array.indexOf(item, start)
item 必需。要檢索的項目。
start 可選。從哪裏開始搜索。負值將從結尾開始的給定位置開始,並搜索到結尾。
如果未找到項目,Array.indexOf() 返回 -1。
如果項目多次出現,則返回第一次出現的位置。
所有瀏覽器都支持indexOf()方法,除了IE8或更早版本
九、lastIndexOf()方法與indexOf() 類似,但是從數組結尾開始搜索。
例(檢索數組中的項目“Apple”):
var fruits = [“Apple”, “Orange”, “Apple”, “Mango”];
var a = fruits.lastIndexOf(“Apple”);
//2
所有瀏覽器都支持lastIndexOf()方法,除了IE8或更早版本
語法和indexOf()類似,star是從結尾開始的給定位置開始,並搜索到開頭。
十、find()方法返回通過測試函數的第一個數組元素的值。
例(查找(返回)大於18的第一個元素的值):
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//25
三個參數,僅調用第一個,其他兩個可以省略。
老舊的瀏覽器都不支持fine()方法,完全支持此方法的首個瀏覽器版本:
在這裏插入圖片描述
十一、findIndex()方法返回通過測試函數的第一個數組元素的索引。
例(查找大於 18 的第一個元素的索引):
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//3
三個參數,僅調用第一個,其他兩個可以省略。
老舊的瀏覽器都不支持fineIndex()方法,完全支持此方法的首個瀏覽器版本:
在這裏插入圖片描述
W3School JavaScript

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章