JavaScript ES5標(biāo)準(zhǔn)中新增的Array方法
ES5中新增的不少東西,了解之對(duì)我們寫(xiě)JavaScript會(huì)有不少幫助,比如數(shù)組這塊,我們可能就不需要去有板有眼地for循環(huán)了。
ES5中新增了寫(xiě)數(shù)組方法,如下:
forEach (js v1.6)
map (js v1.6)
filter (js v1.6)
some (js v1.6)
every (js v1.6)
indexOf (js v1.6)
lastIndexOf (js v1.6)
reduce (js v1.8)
reduceRight (js v1.8)
1、js中常用的數(shù)組Array對(duì)象屬性:
如圖,其中用紅色圓圈標(biāo)記的部分,為ES5新增的屬性。
2、瀏覽器支持情況:
•IE:9+;
•Chrome;
•Firefox2+;
•Safari 3+;
•Opera 9.5+;
3、位置方法
ECMAScript5為數(shù)組定義了2個(gè)位置方法。indexOf(),lastIndexOf();
這兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)表示查找起點(diǎn)位置的索引。
其中,indexOf()從數(shù)組的開(kāi)頭(位置0)開(kāi)始向后查找,lastIndexOf()則是從數(shù)組的末尾開(kāi)始向前查找。
這兩個(gè)方法都要返回要查找的項(xiàng)在數(shù)組中的位置,或者在沒(méi)有找到的情況下返回-1;
示例:
var numbers = [1,2,3,4,5,4,3,2,1]; alert(numbers.indexOf(4)); //4 alert(number.lastIndexOf(4)); //5 alert(number.indexOf(4,4)); //5 alert(number.lastIndexOf(4,4)); //3
4、迭代方法
ECMAScript5為數(shù)組定義了5個(gè)迭代方法。
4.1、every()
定義和用法:every() 方法用于檢測(cè)數(shù)組所有元素是否都符合指定條件(通過(guò)函數(shù)提供)。
every() 方法使用指定函數(shù)檢測(cè)數(shù)組中的所有元素:
•如果數(shù)組中檢測(cè)到有一個(gè)元素不滿足,則整個(gè)表達(dá)式返回 false ,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。
•如果所有元素都滿足條件,則返回 true。
注意: every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。
注意: every() 不會(huì)改變?cè)紨?shù)組。
描述:檢測(cè)數(shù)組 ages 的所有元素是否都大于 18 :
var ages = [32, 33, 16, 40]; function checkAdult(age) { return age >= 18; } function myFunction() { document.getElementById("demo").innerHTML = ages.every(checkAdult); }
結(jié)果為:
false;
4.2、some()
定義和用法:some() 方法用于檢測(cè)數(shù)組中的元素是否滿足指定條件(函數(shù)提供)。
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)都返回true,則返回true;
代碼如下:
var numbers = [1,2,3,4,5,4,3,2,1]; var someResult = numbers.some(function(item,index,array){//item指代數(shù)組值;index指代數(shù)組下標(biāo);array指代數(shù)組本身; return (item>2); }); alert(someResult);
結(jié)果為:
true;
4.3、filter()
定義和用法:filter() 方法創(chuàng)建一個(gè)新的數(shù)組,新數(shù)組中的元素是通過(guò)檢查指定數(shù)組中符合條件的所有元素。
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)的數(shù)組。
描述:要返回一個(gè)所有數(shù)值大于2的數(shù)組,代碼如下:
var numbers = [1,2,3,4,5,4,3,2,1]; var filterResult = numbers.filter(function(item,index,array){//item指代數(shù)組值;index指代數(shù)組下標(biāo);array指代數(shù)組本身; return (item>2); }); alert(filterResult );
結(jié)果為:
[3,4,5,4,3]
4.4、map()
定義和用法:map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。
對(duì)數(shù)組中的每項(xiàng)運(yùn)行給定的函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。
描述:給數(shù)組中的每項(xiàng)乘以2,返回這些乘積組成的數(shù)組,代碼如下:
var numbers = [1,2,3,4,5,4,3,2,1]; var mapResult = numbers.map(function(item,index,array){//item指代數(shù)組值;index指代數(shù)組下標(biāo);array指代數(shù)組本身; return item*2; }); alert(mapResult );
結(jié)果為:
[2,4,6,8,10,8,6,4,2]
4.5、forEach()
定義和用法:對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)。這個(gè)方法沒(méi)有返回值。
本質(zhì)上與使用for循環(huán)遍歷數(shù)組一樣的。代碼如下:
var numbers = [1,2,3,4]; numbers.forEach(function(item,index,array){ console.log(item); });
結(jié)果為:
1
2
3
4
5、縮小方法
ECMAScript5新增兩個(gè)縮小數(shù)組的方法:reduce()和reduceRight();
這兩個(gè)方法多會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中,reduce()方法從數(shù)組的第一項(xiàng)開(kāi)始,逐個(gè)遍歷到最后。
而reduceRight()則從數(shù)組的最后一項(xiàng)開(kāi)始,向前遍歷到第一項(xiàng)。這兩個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選的)作為縮小基礎(chǔ)的初始值。
傳給reduce()和reduceRight()的函數(shù)接收4個(gè)參數(shù):前一個(gè)值,當(dāng)前值,項(xiàng)的索引和數(shù)組對(duì)象。
描述:使用reduce()方法可以執(zhí)行求數(shù)組中所有值之和的操作。代碼如下:
var values = [1,2,3,4,5]; var sum =values.reduce(function(prev,cur,index,array){ return prev+cur; }); alert(sum);
結(jié)果為:
15
以上所述是小編給大家介紹的JavaScript ES5標(biāo)準(zhǔn)中新增的Array方法的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Javascript的ES5,ES6的7種繼承詳解
- JavaScript實(shí)現(xiàn)簡(jiǎn)易輪播圖最全代碼解析(ES5)
- 詳解JavaScript之ES5的繼承
- js定義類(lèi)的方法示例【ES5與ES6】
- 詳解vue-cli+es6引入es5寫(xiě)的js(兩種方法)
- JS實(shí)現(xiàn)集合的交集、補(bǔ)集、差集、去重運(yùn)算示例【ES5與ES6寫(xiě)法】
- JavaScript設(shè)計(jì)模式之原型模式分析【ES5與ES6】
- js es6系列教程 - 基于new.target屬性與es5改造es6的類(lèi)語(yǔ)法
- JS?ES5創(chuàng)建常量詳解
相關(guān)文章
ES6知識(shí)點(diǎn)整理之String字符串新增常用方法示例
這篇文章主要介紹了ES6知識(shí)點(diǎn)整理之String字符串新增常用方法,結(jié)合實(shí)例形式分析了ES6字符串String includes,startsWith,endsWith等方法相關(guān)使用技巧,需要的朋友可以參考下2019-07-07JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片滾動(dòng)附源碼下載
JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片滾動(dòng),9張圖告訴你,C羅欲哭無(wú)淚,另附源碼下載,方便學(xué)習(xí)2014-06-06Javascript圖像處理思路及實(shí)現(xiàn)代碼
HTML5的canvas提供了getImageData接口來(lái)獲取canvas中的數(shù)據(jù),所以我們能夠先用drawImage接口將圖片畫(huà)在canvas上然后再通過(guò)getImageData得到圖片數(shù)據(jù)矩陣,需要了解的朋友可以詳細(xì)參考下2012-12-12使用JavaScript動(dòng)態(tài)設(shè)置樣式實(shí)現(xiàn)代碼(2)
使用onmouseover和onmouseout事件實(shí)現(xiàn)不同的效果而且是使用js動(dòng)態(tài)實(shí)現(xiàn),本文有利于鞏固你js與css方面的知識(shí),感興趣的你可以了解下哦,希望本文對(duì)你有所幫助2013-01-01jquery操作下拉列表、文本框、復(fù)選框、單選框集合(收藏)
jquery操作拉列表、文本框、復(fù)選框、單選框集合。各種對(duì)下拉列表、文本框、復(fù)選框、單選框的jquery的相關(guān)操作。做為記錄和收藏的最好方法2014-01-01JavaScript中使用arguments獲得函數(shù)傳參個(gè)數(shù)實(shí)例
這篇文章主要介紹了JavaScript中使用arguments獲得函數(shù)傳參個(gè)數(shù)實(shí)例,本文用了多個(gè)例子來(lái)講解arguments的使用,需要的朋友可以參考下2014-08-08js實(shí)現(xiàn)點(diǎn)擊切換和自動(dòng)播放的輪播圖
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)點(diǎn)擊切換和自動(dòng)播放的輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07詳解如何使用JavaScript實(shí)現(xiàn)自定義的雙向數(shù)據(jù)綁定
雙向數(shù)據(jù)綁定是一種編程模式,用于在用戶界面和數(shù)據(jù)模型之間實(shí)現(xiàn)數(shù)據(jù)的同步更新,它允許用戶界面中的數(shù)據(jù)變化自動(dòng)更新到數(shù)據(jù)模型中,在這篇文章中,我會(huì)使用基于觀察者模式和基于Proxy對(duì)象來(lái)實(shí)現(xiàn)JS的自定義雙向數(shù)據(jù)綁定2023-08-08JS在IE和FireFox之間常用函數(shù)的區(qū)別小結(jié)
IE和FireFox之間常用函數(shù)的區(qū)別小結(jié),需要的朋友可以參考下。2010-03-03