首页 > 语言 > JavaScript > 正文

实例详解ECMAScript5中新增的Array方法

2024-05-06 14:59:39
字体:
来源:转载
供稿:网友

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.indexOfArray.prototype.lastIndexOfArray.prototype.everyArray.prototype.someArray.prototype.forEachArray.prototype.mapArray.prototype.filterArray.prototype.reduceArray.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"}****/             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选