詳解javascript,ES5標準中新增的幾種高效Array操做方法

一、js中經常使用的數組Array對象屬性:數組

如圖,其中用紅色圓圈標記的部分,爲ES5新增的屬性。瀏覽器

二、瀏覽器支持狀況:函數

  • IE:9+;
  • Chrome;
  • Firefox2+;
  • Safari 3+;
  • Opera 9.5+;

三、位置方法spa

ECMAScript5爲數組定義了2個位置方法。indexOf(),lastIndexOf();
這兩個方法都接收兩個參數:要查找的項和(可選的)表示查找起點位置的索引。
其中,indexOf()從數組的開頭(位置0)開始向後查找,lastIndexOf()則是從數組的末尾開始向前查找。
這兩個方法都要返回要查找的項在數組中的位置,或者在沒有找到的狀況下返回-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        

四、迭代方法code

ECMAScript5爲數組定義了5個迭代方法。對象

4.一、every()blog

定義和用法:every() 方法用於檢測數組全部元素是否都符合指定條件(經過函數提供)。

every() 方法使用指定函數檢測數組中的全部元素:

  • 若是數組中檢測到有一個元素不知足,則整個表達式返回 false ,且剩餘的元素不會再進行檢測。
  • 若是全部元素都知足條件,則返回 true。

注意: every() 不會對空數組進行檢測。索引

注意: every() 不會改變原始數組。ip

描述:檢測數組 ages 的全部元素是否都大於 18 :get

var ages = [32, 33, 16, 40];
function checkAdult(age) {
    return age >= 18;
}
function myFunction() {
    document.getElementById("demo").innerHTML = ages.every(checkAdult);
}

結果爲:

false;

4.二、some()
定義和用法:some() 方法用於檢測數組中的元素是否知足指定條件(函數提供)。
對數組中的每一項運行給定的函數,若是該函數對任一項都返回true,則返回true;

代碼以下:

var numbers = [1,2,3,4,5,4,3,2,1];
var someResult = numbers.some(function(item,index,array){//item指代數組值;index指代數組下標;array指代數組自己;
     return (item>2);
});
alert(someResult);

結果爲:

true;

4.三、filter()

定義和用法:filter() 方法建立一個新的數組,新數組中的元素是經過檢查指定數組中符合條件的全部元素。
對數組中的每一項運行給定函數,返回該函數會返回true的項的數組。
描述:要返回一個全部數值大於2的數組,代碼以下:
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){//item指代數組值;index指代數組下標;array指代數組自己;
     return (item>2);
});
alert(filterResult );

結果爲:

[3,4,5,4,3]

4.四、map()

定義和用法:map() 方法返回一個新數組,數組中的元素爲原始數組元素調用函數處理後的值。
對數組中的每項運行給定的函數,返回每次函數調用的結果組成的數組。
描述:給數組中的每項乘以2,返回這些乘積組成的數組,代碼以下:
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){//item指代數組值;index指代數組下標;array指代數組自己;
     return item*2;
});
alert(mapResult );

結果爲:

[2,4,6,8,10,8,6,4,2]

4.五、forEach()

定義和用法:對數組中的每一項運行給定的函數。這個方法沒有返回值。
本質上與使用for循環遍歷數組同樣的。代碼以下:
var numbers = [1,2,3,4];
numbers.forEach(function(item,index,array){
    console.log(item);
});

結果爲:

1
2
3
4

五、縮小方法

ECMAScript5新增兩個縮小數組的方法: reduce()和reduceRight();
這兩個方法多會迭代數組的全部項,而後構建一個最終返回的值。其中,reduce()方法從數組的第一項開始,逐個遍歷到最後。
而reduceRight()則從數組的最後一項開始,向前遍歷到第一項。這兩個方法都接收兩個參數:一個在每一項上調用的函數和(可選的)做爲縮小基礎的初始值。
傳給reduce()和reduceRight()的函數接收4個參數:前一個值,當前值,項的索引和數組對象。
描述:使用reduce()方法能夠執行求數組中全部值之和的操做。代碼以下:
var values  = [1,2,3,4,5];
var sum =values.reduce(function(prev,cur,index,array){
    return  prev+cur;
});
alert(sum);

結果爲:

15
相關文章
相關標籤/搜索