DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 實例詳解ECMAScript5中新增的Array方法
實例詳解ECMAScript5中新增的Array方法
編輯:關於JavaScript     

ECMAScript5 給出了一系列新的API接口,這些接口在新的浏覽器中大部分是被支持的,IE9,Chrome,FirFor都支持,也有少量API不是所有浏覽器都支持,以下內容僅介紹大部分被支持的API。利用新的API我們可以設計出非常靠譜的類,而且還能保持原有的javaScript的風格。

ECMAScript5標准發布於2009年12月3日,它帶來了一些新的,改善現有的Array數組操作的方法。(注意兼容性)

在ES5中,一共有9個Array方法:http://kangax.github.io/compat-table/es5/

Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight 

下面列舉了其中的7種方法,前5種方法很常見,很多開發者都會用到:

1、indexOf()

indexOf()方法返回在該數組中第一個找到的元素位置,如果它不存在則返回-1。

var arr = ['apple', 'orange', 'pear'],
found = false;
// 未使用
for (var i = 0, l = arr.length; i < l; i++) {
if (arr[i] === 'orange') {
found = true;
}
}
console.log("found:", found); // ==> found: true
// 使用後
console.log("found:", arr.indexOf("orange") != -1); // ==> found: true 

2、filter()

該filter()方法創建一個新的匹配過濾條件的數組。

不用 filter() 時:

var arr=[{"name":"apple", "count": 2},{"name":"orange", "count": 5},{"name":"pear", "count": 3},{"name":"orange", "count": 16},]
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].name === "orange") {
newArr.push(arr[i]);
}
}
console.log("Filter results:", newArr); 

用了 filter():

var newArr = arr.filter(function(item) {
return item.name === "orange";
});
console.log("Filter results:", newArr); 

3、forEach()

forEach為每個元素執行對應的方法,是用來替換for循環的。

var arr = [1, 2, 3, 4, 5, 6, 7, 8];
// 使用for循環
for (var i = 0, l = arr.length; i < l; i++) {
console.log(arr[i]);
}
// 使用forEach循環
arr.forEach(function(item, index) {
console.log(item);
}); 

4、map()

map()對數組的每個元素進行一定操作(映射)後,會返回一個新的數組。

var oldArr = [{first_name: "Colin",last_name: "Toh"}, {first_name: "Addy",last_name: "Osmani"}, {first_name: "Yehuda",last_name: "Katz"}];
function getNewArr() {
var newArr = [];
for (var i = 0; i < oldArr.length; i++) {
var item = oldArr[i];
item.full_name = [item.first_name, item.last_name].join(" ");
newArr[i] = item;
}
return newArr;
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****輸出結果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 

使用map()方法:

function getNewArr() {
return oldArr.map(function(item, index) {
item.full_name = [item.first_name, item.last_name].join(" ");
return item;
})
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****輸出結果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 

5、reduce()

reduce()可以實現一個累加器的功能,將數組的每個值(從左到右)將其降低到一個值。也可以理解為:讓數組中的前項和後項做某種運算,並累積最終值;

場景: 統計一個數組中有多少個不重復的單詞;

var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
function getWordCnt() {
var obj = {};
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
obj[item] = (obj[item] + 1) || 1;
}
return obj;
}
console.log(getWordCnt());
// 輸出結果:
// Object {apple: 2, orange: 3, pear: 1} 

使用reduce()後:

var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
function getWordCnt() {
return arr.reduce(function(prev, next) {
prev[next] = (prev[next] + 1) || 1;
return prev;
}, {});
}
console.log(getWordCnt());
// 輸出結果:
// Object {apple: 2, orange: 3, pear: 1} 

6 、array.some(callback[, thisObject]);callback : 函數用來測試某些元素。

thisObject: 對象作為該執行回調時使用。

檢測數組中是否有某些項符合條件;

var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.some(passed)); // == > true 

7、array.every(callback[, thisObject]);callback : 函數用來測試每個元素。thisObject: 對象作為該執行回調時使用。

檢測數組中每一項是否符合條件;

var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.every(passed)); // == > false

通過以上實例給大家介紹了ECMAScript5中新增的Array方法,希望對大家有所幫助!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved