数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充。

Array.isArray(element)

  这是Array对象的一个静态函数,用来判断一个对象是不是数组

var a = new Array();
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false

.indexOf(element) / .lastIndexOf(element)

  顾名思义,这两个方法用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。

var a=new Array(,,,,,);
console.log(a.indexOf()); //
console.log(a.lastIndexOf()); //

.forEach(element,index,array)

  遍历数组,参数为一个回调函数,回调函数有三个参数:当前元素,元素索引,整个数组

var a=new Array(,,,,,);
a.forEach(function(e,i,array){
array[i]=e+;//array:当前数组,i:当前索引,e:当前元素
});
console.log(a); //[2, 3, 4, 5, 6, 7]

.every(function(element,index,array)) 和 .some(function(element,index,array))

  这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值:

  every是“所有”函数的每个回调函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false;

  some函数是“存在”有一个回调函数返回true的时候终止执行并返回true,否则返回false。

  在空数组上调用every返回true,some返回false。

var a=new Array(,,,,,);
console.log(a.every(function(e,i,arr){
console.log(i+' : '+e);
return e<;
}));
/*0 : 1
1 : 2
2 : 3
3 : 4
4 : 5
false */
//如果改成return e<7; 则最终结果是true
var a=new Array(,,,,,);
console.log(a.some(function(e,i,arr){
console.log(i+' : '+e);
return e>;
}));
/*0 : 1
1 : 2
2 : 3
3 : 4
4 : 5
true */
//如果改成return e>6;则返回false

.map(function(element))

  与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变

var a=new Array(,,,,,);
console.log(a.map(function(e){
return e*e;
})); // [1, 4, 9, 16, 25, 36]
console.log(a); //[1, 2, 3, 4, 5, 6]

.filter(function(element))

  返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加,新数组只包含返回true的值,索引缺失的不包括,原数组保持不变

var a=new Array(,,,,,);
console.log(a.filter(function(e){
return e%==;//能被2整除的
})); // [2, 4, 6]
console.log(a); //[1, 2, 3, 4, 5, 6]

.reduce(function(v1,v2),value) / .reduceRight(function(v1,v2),value)

  遍历数组,调用回调函数,将数组元素累加成一个值,reduce从索引最小值开始,reduceRight反向,

  方法有两个参数:

  1、回调函数:把两个值合为一个,返回结果

  2、value,一个初始值,可选

var a=new Array(,,,,,);
console.log(a.reduce(function(v1,v2){
return v1+v2;
})); // console.log(a.reduceRight(function(v1,v2){
return v1-v2;
},)); //

  forEach:对数组中每一个元素都运行函数,该方法没有返回值。如果你想对数据里的每一个元素进行处理,可以采用forEach来替换 for 循环

  map:对数组中每一个元素都运行函数,返回由每次函数执行的结果组成的数组。和forEach不同的是,它最终会返回一个新的数组,数组的元素是每次处理先前数组中元素返回的结果

  reduce:对数组中的所有元素调用指定的回调函数。 该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。

最新文章

  1. 现在有哪些浏览器的哪些版本支持 HTML5
  2. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销
  3. 在不借助其他工具的情况下破解Windows开机密码
  4. Maven的安装、配置及使用入门
  5. DWZ中关于iframeCallback和validateCallback的注意事项
  6. python--类方法、对象方法、静态方法
  7. 【linux】/dev/null与/dev/zero详解【转】
  8. PopupWindow添加动画效果
  9. Java NIO 选择器(Selector)的内部实现(poll epoll)
  10. iptables的实战整理
  11. ZOJ 3229 Shoot the Bullet [上下界最大流]
  12. Course1-Python数据类型总结
  13. centos7上 docket无权限的问题
  14. 关于linux - Centos 7 下DHCP服务的安装与配置
  15. 前端之js中的函数
  16. NLP笔记:词向量和语言模型
  17. stm32 硬件错误
  18. 力扣(LeetCode)412. Fizz Buzz
  19. hibernate一级缓存和二级缓存的区别
  20. Apache Cordova vs Adobe PhoneGap: the differences and which one to use

热门文章

  1. ZigBee MAC层(下)
  2. suse下自动启动脚本
  3. java 生成execl下载
  4. 手机端图片插件可缩放 旋转 全屏查看photoswipe
  5. linux awk学习笔记
  6. MySQL 基础内容
  7. Android 判断SD卡是否存在和使用容量查询
  8. centos6 部署strongloop
  9. web api 返回数据
  10. FZU 2150 Fire Game 【两点BFS】