實(shí)例詳解ECMAScript5中新增的Array方法
來源:易賢網(wǎng) 閱讀:791 次 日期:2016-07-08 15:11:05
溫馨提示:易賢網(wǎng)小編為您整理了“實(shí)例詳解ECMAScript5中新增的Array方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了實(shí)例詳解ECMAScript5中新增的Array方法的相關(guān)資料,需要的朋友可以參考下

ECMAScript5 給出了一系列新的API接口,這些接口在新的瀏覽器中大部分是被支持的,IE9,Chrome,F(xiàn)irFor都支持,也有少量API不是所有瀏覽器都支持,以下內(nèi)容僅介紹大部分被支持的API。利用新的API我們可以設(shè)計(jì)出非??孔V的類,而且還能保持原有的javaScript的風(fēng)格。

ECMAScript5標(biāo)準(zhǔn)發(fā)布于2009年12月3日,它帶來了一些新的,改善現(xiàn)有的Array數(shù)組操作的方法。(注意兼容性)

在ES5中,一共有9個(gè)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種方法很常見,很多開發(fā)者都會(huì)用到:

1、indexOf()

indexOf()方法返回在該數(shù)組中第一個(gè)找到的元素位置,如果它不存在則返回-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()方法創(chuàng)建一個(gè)新的匹配過濾條件的數(shù)組。

不用 filter() 時(shí):

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為每個(gè)元素執(zhí)行對(duì)應(yīng)的方法,是用來替換for循環(huán)的。

var arr = [1, 2, 3, 4, 5, 6, 7, 8];

// 使用for循環(huán)

for (var i = 0, l = arr.length; i < l; i++) {

console.log(arr[i]);

}

// 使用forEach循環(huán)

arr.forEach(function(item, index) {

console.log(item);

});

4、map()

map()對(duì)數(shù)組的每個(gè)元素進(jìn)行一定操作(映射)后,會(huì)返回一個(gè)新的數(shù)組。

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);

})

/****輸出結(jié)果:

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);

})

/****輸出結(jié)果:

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()可以實(shí)現(xiàn)一個(gè)累加器的功能,將數(shù)組的每個(gè)值(從左到右)將其降低到一個(gè)值。也可以理解為:讓數(shù)組中的前項(xiàng)和后項(xiàng)做某種運(yùn)算,并累積最終值;

場景: 統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)不重復(fù)的單詞;

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());

// 輸出結(jié)果:

// 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());

// 輸出結(jié)果:

// Object {apple: 2, orange: 3, pear: 1}

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

thisObject: 對(duì)象作為該執(zhí)行回調(diào)時(shí)使用。

檢測數(shù)組中是否有某些項(xiàng)符合條件;

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 : 函數(shù)用來測試每個(gè)元素。thisObject: 對(duì)象作為該執(zhí)行回調(diào)時(shí)使用。

檢測數(shù)組中每一項(xiàng)是否符合條件;

var scores = [45, 60, 70, 65, 95, 85];

var current = 60;

function passed(score) {

return score > current;

}

console.log(scores.every(passed)); // == > false

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

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:實(shí)例詳解ECMAScript5中新增的Array方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)