js的数组ECMAScript 5加入的方法(一)
来源:互联网 发布:芜湖生活频道 网络直播 编辑:程序博客网 时间:2024/05/20 02:25
ECMAScript 5新增了9个数组实例的方法,分别是map、forEach、filter、every、some、reduce、reduceRight、indexOf和lastIndexOf。其中,前7个与函数式(functional)操作有关。
这些方法可以在数组上使用,也可以在字符串和类似数组的对象上使用,这是它们不同于传统数组方法的一个地方。
在用法上,这些方法的参数是一个函数,这个作为参数的函数本身又接受三个参数:数组的当前元素elem、该元素的位置index和整个数组arr(详见下面的实例)。另外,上下文对象(context)可以作为第二个参数,传入forEach(), every(), some(), filter(), map()方法,用来绑定函数运行时的上下文。
map方法,forEach方法
map方法对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组,原数组并没有改变<script type="text/javascript"> var a = [1, undefined, 2]; var log = function(n){ return n+1 }; var b = a.map(log); console.log(b[0]+"-"+b[1]+"-"+b[2]); //2-NaN-3 </script>只要数组的成员可以被索引到,map方法就不会跳过它。map的回掉函数参数有三位,分别代表当前元素,当前元素的索引,数组本身
var f = function(elem, index, arr){ return elem+1 };[1, undefined, 2].map(f); // [2, NaN, 3][1, null, 2].map(f); // [2, 1, 3][ 1, , 2,].map(f) // [2, undefined, 3]有时候需要对字符串进行遍历
var upper = function (x) { console.log(x.toUpperCase()); };//方法一[].map.call('abc', upper)// [ 'A', 'B', 'C' ]
<pre name="code" class="html" style="color: rgb(34, 34, 34); line-height: 31px;">//方法二'abc'.split('').map(upper)// [ 'A', 'B', 'C' ]map方法还可以接受第二个参数,表示回调函数执行时this所指向的对象。
foreach()方法功能同map,区别在于一是:没有返回值,二是会跳过数组的空位。
['a', , 'c'].map(upper)//A//Cforeach第二个参数 绑定回调函数的this关键字 同map函数
var out = [];[1, 2, 3].map(function(elem, index, arr){ this.push(elem * elem);}, out);console.log(out[0]);console.log(out[1]);console.log(out[2]);
filter方法
filter,见名知意,就是过滤,对每个数组成员调用回调函数过滤复合条件的元素组成新数组,并返回var b = [1, 2, 3, 4, 5].filter(function (elem){ return (elem > 3);})console.log(b.length); //2console.log(b[0]); //4console.log(b[1]); //5console.log(b[2]); //undefinedfilter方法同样有第二个参数,意思同上
var Obj = function () { this.MAX = 3;};var myFilter = function(item) { if (item > this.MAX) { //this 代表对象Obj return true; }};<span style="white-space:pre"></span>var arr = [2,8,3,4,1,3,2,9];var c = arr.filter(myFilter, new Obj())console.log(c[0]);console.log(c[1]);console.log(c[2]);// [8, 4, 9]
0 0
- js的数组ECMAScript 5加入的方法(一)
- js的数组ECMAScript 5加入的方法(二)
- ECMAScript 5中最常用的数组处理方法
- Ecmascript中数组的五种迭代方法
- ECMAScript的数组
- ECMAScript 5中的数组方法
- ECMAScript 5中的数组方法
- ECMAScript中数组的各种方法的整理
- <Js>ECMAScript变量的声明
- JavaScrip数组方法+ECMAScript 5新增
- ECMAScript 6(11)——数组的扩展
- ECMAScript 6 入门学习(7.数组的扩展)
- js数组的方法
- JS数组的方法
- js数组的方法
- js数组的方法
- JS数组的方法
- js数组的方法
- BZOJ3456【分治FFT】
- 查找总结
- Warshall算法求道路矩阵
- 黑马程序员---Java概述与jdk的安装和配置(一)
- bootstrap-table(一)
- js的数组ECMAScript 5加入的方法(一)
- Java 截取字符串
- poj 2287 Tian Ji -- The Horse Racing
- IOS UITextView 提交建议反馈
- JSTL整理总结
- 躧搿螞 解题报告
- mysql安装后无法登陆或者jdbc无法连接解决方法
- poj 2063 Investment
- 今天是头一天,以后有什么好的资料,就收集到博客里面了。