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. 《iPhone开发基础教程》第13章 我在哪里?使用Core Location定位功能
  2. Entity Framework ModelFirst尝试
  3. 场景切换 异步加载 loading条做法
  4. leetcode 415. 字符串相加(Java版)
  5. NOIP2005普及组第3题 采药 (背包问题)
  6. 线程、多线程和线程池,看完这些你就能全部搞懂了
  7. SSM框架笔记06:初探Spring——采用XML配置方式
  8. 理解setState(),异步还是同步?
  9. qjsonarray 合并_QJsonObject和QJsonArray的巨坑
  10. php输出因子,如何在PHP因子程序中返回值
  11. (原创)无废话C#设计模式之二十:Mediator
  12. 2021-11-12 应用密码学:协议、算法与C源程序(目录)
  13. 《算法和数据结构》题海战术篇
  14. linux引导界面背景,如何个性化syslinux引导界面背景照片
  15. 虚幻4_添加武器插槽到骨骼
  16. vue+websocket+express+mongodb实战项目(实时聊天)(一)
  17. ajax、promise、react、缓存笔记记录
  18. 【OpenGL】绘制一个点
  19. 博客营销与软文营销那些事儿
  20. QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection

热门文章

  1. CodeForces - 766C - Mahmoud and a Message dp
  2. C语言的fgets 与 gets
  3. c++心形代码_c语言心形告白代码实现
  4. php替换不区分大小写_PHP大小写问题:函数名和类名不区分,变量名区分
  5. metinfo mysql off_利用Sqlmap测试MetInfo企业网站管理系统MySql注入
  6. python随机划分数据集_Python之机器学习-sklearn生成随机数据
  7. verilog设置24进制计数器_阅读笔记:《Verilog HDL入门》第3章 Verilog语言要素
  8. linux 安全审计功能,数据库安全审计在数据安全中的功能
  9. java数据类型及表示范围_Java数据类型及对应取值范围
  10. STL内嵌数据类型: value_type