七.ECMAScript5关于数组的新方法

1.forEach():遍历数组,并为每个元素调用传入的函数;
     举例:
   

  1  var a = [1,2,3];
2 var sum = 0;
3 //传一个参数
4 a.forEach(function(v){
5 sum += v;
6 });
7 console.log(sum);//6
8 //传三个参数(元素值,索引,数组本身)
9 a.forEach(function(v,i,a){
10 a[i]=v+1;//为数组的各元素自加1
11 })
12 console.log(a);//[2,3,4]

2.map():将调用该函数的数组的每个元素都传入指定函数,并返回运算后的新数组;

注意:该函数不修改原数组.

举例:

  1 var a = [1,2,3];
2 var b = a.map(function(x){
3 return x*x;
4 })
5 console.log(b);//[1,4,9]

3.filter():将调用该函数的数组的每个元素传入指定函数进行判定,若判定为true,则返回.最终返回一个符合指定条件(函数)的元素的集合(该集合为原数组的子集)

注:该函数会跳过稀疏数组中缺少的元素,总是返回稠密数组,利用此特性可以压缩稀疏数组.
     举例1:
   

  1  var a = [1,2,3];
2 var c = a.filter(function(x){
3 return x<3;
4 })
5 console.log(c);

举例2:
   

  1  var a = [ ,1,null,3,4, ,];
2 console.log(a.length);//6
3 var dense = a.filter(function(){
4 return true;//过滤掉undefined
5 });
6 console.log(dense);//[1,null,3,4]
7 console.log(a);//Array(6) […, 1, null, 3, 4]未改变原有数组
8 var c = a.filter(function(x){
9 return x!=undefined && x != null;
10 });
11 console.log(c);//Array(3) [1, 3, 4]

4.every():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),全部符合则返回true;注意空数组调用时返回true;

some():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),只要有一个符合则返回true;注意空数组调用时返回false;
     举例1:
   

  1  var a = [1,2,3,4,5];
2 var b = a.every(function(x){
3 return x >0;//判定是否所有元素均大于0
4 });
5 console.log(b);//true
6 var c = a.some(function(x){
7 return x < 4; //判定是否有元素小于4
8 });
9 console.log(c);//true

举例2:空数组调用
    

  1 var d = [];
2 console.log(d.every(function(x){
3 return x;
4 }));//true
5 console.log(d.some(function(x){
6 return x;
7 }));//false

5.reduce()和reduceRight()

使用指定的函数对数组元素进行组合,生成单个值.指定函数需要两个值(第一个是执行化简操作的函数;第二个(可选)是传递给函数的初始值)

注意:1)无第二个参数时,函数会调用数组的第一个元素作为初始值,若数组为空数组则报"类型错误"异常;

2)若数组只有一个元素,并且未提供第二个参数,则不会调用函数,只是返回该唯一元素;

举例1:

  1 var a = [1,2,3,4,5];
2 //求和
3 var sum = a.reduce(function(x,y){
4 return x+y;
5 },0);
6 console.log(sum);//15
7 //求积
8 var mul = a.reduce(function(x,y){
9 return x*y;
10 },1)
11 console.log(mul);//120
12 //求最大值
13 var max = a.reduce(function(x,y){
14 return x>y?x:y;
15 },0)
16 console.log(max);//5

举例2:幂运算

  1 var a = [2,3];
2 var big = a.reduceRight(function(x,y){
3 return Math.pow(y,x);
4 });
5 console.log(big);//2^3=8
6
7 var big1 = a.reduceRight(function(x,y){
8 return Math.pow(x,y);
9 });
10 console.log(big1);//3^2=9
11

6.indexOf()和lastIndexOf()

返回给定索引值的元素,lastIndexOf()从右往左搜索;若没有找到,则返回-1;

注意:该函数可接收两个参数,第一个参数为需要搜索的索引;第二个为开始搜索的位置(可选);两个参数都不为函数;

举例:定义一个函数,查找数组中所有出现的x,并返回包含所有索引的数组

  1 function findall(a,x){
2 var results = []; //定义空数组,用来接收x的索引值
3 len = a.length; //搜索的最大长度
4 pos = 0; //开始搜索的位置
5 while(pos<len){
6 pos = a.indexOf(x,pos); //从pos开始搜索x
7 if(pos === -1){
8 break; //找不到就返回
9 }
10 results.push(pos);//存储索引值
11 pos = pos+1;
12 }
13 return results;
14 }
15 测试
16 var a = [1,2,3,2,4];
17 console.log(findall(a,2));//Array(2) [1, 3]

八.判定是否为数组

Array.isArray():判定是否为数组类型,是则返回true;

九.字符串可以作为只读的数组

可以使用方括号([])访问单个字符;

也可以作用charAt()方法

举例:

  1 var s = test;
2 s.charAt(0);//"t"
3 s[0];//"t"

十:需求:将完全由数字组成的字符串转为数字类型,如"1345"转为1345

法一:

  1 'use strict';
2 function string2int(s){
3 //将s转为字符串数组
4 var str = s.split('');
5 //调用map()将字符串数组转为数字数组
6 var arr = str.map(function(x){
7 //字符-0即可变为数字
8 return x-0;
9 })
10 //调用reduce(),将数字数组转为int类型
11 var res = arr.reduce(function(x,y){
12 return x*10+y;
13 })
14 //返回结果
15 return res;
16 }

法二:

  1 'use strict';
2 var b = "1345";
3 //split():将字符串转为字符类型的数组
4 var c = b.split('');
5 //与0做减法运算,将字符类型转为数字类型
6 var d = [];
7 for(var i= 0;i<c.length;i++){
8 d[i]=c[i]-0;
9 }
10 //转为整型
11 var e = d.reduce(function(x,y){
12 return x*10+y;
13 })
14 console.log(e);

最新文章

  1. 01-C#入门(函数重载、委托)
  2. POJ(2187)用凸包求最远点对
  3. Cocos2d-JS轻量级开发
  4. STL容器set()---&gt;自定义数据类型
  5. ASP生成静态文件编码为UTF-8格式的HTML文件
  6. 大型分布式C++框架《一:框架简介》
  7. Global build settings
  8. Eclipse开发工具的使用之-使用Eclipse的Debug调试Android程序
  9. 内核初始化优化宏(__init, __devinit)
  10. 51Nod 1781 跑的比谁都快
  11. Flask 构建微电影视频网站(八)
  12. 本机是wifi,虚拟机无法连接外网问题
  13. Android使用Fiddler模拟弱网络环境测试
  14. 通过C#发送自定义的html格式邮件
  15. centos 安装sbt
  16. centos7上安装nagios
  17. Json4:使用json-lib解析、生成Json
  18. TCP/IP协议(7):应用层
  19. 学习总结---INNODB 事务并发
  20. 如何修改静态IP地址和动态IP地址

热门文章

  1. JavaScript的中类型转换
  2. 用mapreduce实现从hbase导出到hdfs,实现一个工具类,能够支持任意表 任意列 任意路径导出,并且支持表头
  3. Eclipse+Maven
  4. ceph 删除了osd但是osd目录保存完整如何恢复
  5. PCL推荐的命名规范(2)
  6. SmartSql使用教程(2)——使用动态代理实现CURD
  7. ASP.NETCORE MVC模块化
  8. Lightoj1007【欧拉函数-素数表】
  9. tp5 搜索之后保留分页
  10. bzoj 2535: [Noi2010]Plane 航空管制2【拓扑排序+堆】