实例详解ECMAScript5中新增的Array方法
来源: 阅读:747 次 日期:2016-07-08 15:11:05
温馨提示: 小编为您整理了“实例详解ECMAScript5中新增的Array方法”,方便广大网友查阅!

这篇文章主要介绍了实例详解ECMAScript5中新增的Array方法的相关资料,需要的朋友可以参考下

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方法,希望对大家有所帮助!

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map