2个位置方法:indexOf  lastIndexOf

5个迭代方法:forEach       every  some       filter  map

2个高阶函数:reduce  reduceRight  (可用于数组求和)

API:

1、indexOf(searchElement: T, fromIndex?: number): number;  // 返回被查找的元素在数组中的索引index,判断标准为恒等于“===

lastIndexOf(searchElement: T, fromIndex?: number): number; // 从后往前查找,返回元素在数组中的索引index

var arr = [1,2,3,4,5,4,3,2,1];
// 一个参数
var index = arr.indexOf(4); // 3
alert(index);
// 两个参数
index = arr.indexOf(4, 4);
alert(index); // 5
alert(arr.indexOf(true)); // -1
alert(arr.lastIndexOf(3)); // 6

2、(1) forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;

对于数组每一个元素执行一个函数

(2) every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;

对于数组每一个元素执行一个函数,如果都返回true,则最终返回true,否则返回false。

(3)some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;

对于数组每一个元素执行一个函数,如果有一个返回true,则最终返回true,否则返回false

(4)filter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];

对于数组每一个元素执行一个函数,用指定的条件过滤,返回原数组中所有满足条件的元素组成的新数组。

(5)map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];

对于数组每一个元素执行一个函数,函数返回值组成新数组并返回。

// 对于数组每一个元素执行一个函数
arr.forEach(function (value, index, array) {// ...
})// 对于数组每一个元素执行一个函数,如果都返回true,则最终返回true,否则返回false
var result = arr.every(function (value, index, array) {return value > 2;
}, 2);
alert(result); // false// 对于数组每一个元素执行一个函数,如果有一个返回true,则最终返回true,否则返回false
var someResult = arr.some(function (value, index, array) {return value >= 5;
}, 2);
// alert(someResult); // true// 对于数组每一个元素执行一个函数,用指定的条件过滤,返回所有满足条件的元素组成的新数组
var filterResult = arr.filter(function (value,index,array) {return value > 2;
});
console.log(filterResult); // [3, 4, 5, 4, 3]// 对于数组每一个元素执行一个函数,函数返回值组成新数组并返回
var mapResult = arr.map(function (value,index,array) {return value * 2;
});
console.log(mapResult); // [2,4,6,8,10,8,6,4,2]

3、reduce和reduceRight高阶函数

reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;

reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;

从数组中第2个元素开始执行函数,把上一次的函数返回值作为本次函数的第一个参数的值previousValue,(previousValue初始值默认为原数组第一个元素的值,也可通过initialValue参数指定);reduceRight从右边开始遍历(同样从第2个元素开始)

// 从数组中第2个元素开始执行函数,把上一次的函数返回值作为本次函数的第一个参数的值previousValue,(previousValue初始值默认为原数组第一个元素的值)
var reduceResult = arr.reduce(function (previousValue, currentValue, currentIndex, array) {return previousValue + currentValue; // 此时相当于数组求和
});
alert(reduceResult); // 25   原数组[1,2,3,4,5,4,3,2,1]

ES5总结1:数组Array新特性最全最精简的详解相关推荐

  1. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  2. mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解

    jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法. 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function.比如: Function  ...

  3. Servlet3.0新特性WebFilter(Annotation Filter)详解

    摘要: Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,是Servlet3.0的新特性,不需要在web.xml进行配置,简化了配置. Name T ...

  4. java双冒号_jdk8新特性之双冒号 :: 用法及详解

    jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法. 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function.比如: Function ...

  5. C++11新特性之变长参数模板详解

    本文主要介绍了C++11变长参数模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 目录 C++11 变长参数模板 变长函数参数 ...

  6. Java8新特性Stream API与Lambda表达式详解(1)

    2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/caihuangshi/article/details/51298622 转载于:h ...

  7. concat 不是可以识别的 内置函数名称。_新特性解读 | MySQL 8.0 窗口函数详解

    背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能.不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF, ...

  8. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解

    如何利用一维数组实现二维数组的多列自由升降序排序过程详解 本例只说明多列排序的实现方式,一维数组的排序已经有过讲解不在赘述.所以本文是在已经完成了一维数组排序的函数封装的基础上完善多列排序的过程的详解 ...

  9. 视频分享|新冠肺炎疫情趋势预测大赛技术详解

    点击我爱计算机视觉标星,更快获取CVML新技术 本篇文章的内容是???? 3月1号FlyAI直播视频整理分享 视频内容: ????新冠肺炎疫情趋势预测大赛技术详解 ????用户问题答疑 前半部分会带领 ...

最新文章

  1. poj - 1651 Multiplication Puzzle
  2. 太多脚本将会毁掉持续交付
  3. PCB 围绕CAM自动化,打造PCB规则引擎
  4. 30分钟带你熟练性能优化的那点儿事儿(案例说明)
  5. Springboot整合redis(lettuce)
  6. 纯 js 导出 excel
  7. 2018 计蒜之道 复赛
  8. airpodspro窃听模式_AirPods Pro实时收听怎么关闭? AirPods Pro实时收听的使用方法
  9. IPv6终于要取代IPv4了!阿里云将全面提供IPv6服务
  10. Ubuntu 安装 Cassandra 数据库
  11. infopath 小结
  12. Ubuntu10.04下Linux内核编译的完整步骤
  13. Linux 桌面版为什么打不过 Window?Linus 现身说法!
  14. matlab怎么查看工具箱,MATLAB怎么调出工具箱 神经网络matlab工具箱
  15. 10分钟搭建linux代理服务器
  16. 《穿透:像社会学家一样思考》简述
  17. matplotlib cmap取值
  18. 冷门但实用的Word技巧
  19. krait和kryo_java原生序列化和Kryo序列化性能比较
  20. 要报销的发票如何批量下载打印

热门文章

  1. linux搭建虚拟化平台报告,部署KVM虚拟化平台------搭建(示例代码)
  2. tensor判断是否相等_PyTorch的Tensor(中)
  3. java sleep方法_一文搞懂 Java 线程中断!
  4. 地表反射率影响因素_【热岛强度可影响城市夏季降水落区】
  5. MATLAB 求曲线长度
  6. grep -q用于if逻辑判断
  7. ubuntu/wireshark --Lua: Error during loading: [string /usr/share/wireshark/init.lua]:45问题解决
  8. 详解WINCE的控制面板
  9. 计算机控制的点火系统由,第八节(点火系统)
  10. mysql 碎片率_计算MySQL表碎片的SQL整理