js基礎(chǔ)之?dāng)?shù)組迭代方法

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惭婿,一起剝皮案震驚了整個濱河市不恭,隨后出現(xiàn)的幾起案子叶雹,更是在濱河造成了極大的恐慌,老刑警劉巖换吧,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件折晦,死亡現(xiàn)場離奇詭異,居然都是意外死亡沾瓦,警方通過查閱死者的電腦和手機(jī)满着,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贯莺,“玉大人风喇,你說我怎么就攤上這事÷铺剑” “怎么了魂莫?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爹耗。 經(jīng)常有香客問我耙考,道長,這世上最難降的妖魔是什么潭兽? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任倦始,我火速辦了婚禮,結(jié)果婚禮上山卦,老公的妹妹穿的比我還像新娘鞋邑。我一直安慰自己,他們只是感情好怒坯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藻懒,像睡著了一般剔猿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嬉荆,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天归敬,我揣著相機(jī)與錄音,去河邊找鬼鄙早。 笑死汪茧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的限番。 我是一名探鬼主播舱污,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弥虐!你這毒婦竟也來了扩灯?” 一聲冷哼從身側(cè)響起媚赖,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎珠插,沒想到半個月后惧磺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捻撑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年磨隘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顾患。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡番捂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出描验,到底是詐尸還是另有隱情白嘁,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布膘流,位于F島的核電站絮缅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呼股。R本人自食惡果不足惜耕魄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彭谁。 院中可真熱鬧吸奴,春花似錦、人聲如沸缠局。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狭园。三九已至读处,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唱矛,已是汗流浹背罚舱。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绎谦,地道東北人管闷。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像窃肠,于是被迫代替她去往敵國和親包个。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容