关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结
起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用。如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 ;)
ES3的数组方法
join();
- 目的:将数组转化为字符串.
- 参数:无or可传一个参数(传超过1个的参数,默认取第一个参数), 参数为字符或字符串,参数将在数组的每个元素的间隔插入。PS: 参数无的时候,数组元素间隔为 ','.
- 是否改变原数组: 不改变原数组, 返回一个新的字符串.
- 逆向操作:String.split().
reverse();
- 目的:将数组中的元素颠倒顺序.
- 参数:无(无视参数).
- 是否改变原数组: 改变原来的数组.
sort();
- 目的:将数组的元素按照一定规则排序.
- 参数:无or可传一个函数(传超过1个的函数,默认取第一个函数)。PS: 参数无的时候数组元素默认按照字母表顺序排序.
函数参数:
> 你必须给sort()方法传递一个比较函数,所以一般传递俩个参数.PS:第三个参数默认undefined.
> 假设第一个参数应该在前,你应该返回一个小于0的数值,
> 否则,你应该返回一个大于0的数值,
> 假设俩个值相等(也就是说他们的排序无关紧要),函数应该返回0.
> PS:数组元素是从前到后 俩俩比较.是否改变原数组: 改变原来的数组.
concat();
- 目的:像胶水一样,将参数粘合在数组后面.
- 参数:字符串或数组(参数不限)。
> 当参数为数组时,粘合的是数组的元素,而非数组本身.
> 但此方法不会扁平化数组参数(换句话说,如果你的参数是个数组,里面又嵌套了超过1个数组,这个里面的数组的元素不会被提取出来粘合,而是整个数组被粘合在新的数组后面). - 是否改变原数组:不改变原数组, 返回一个新的数组.
slice();
- 目的:返回数组的一个片段或子数组.
- 参数:无or一个参数or俩个参数
> 无参数将原样返回一个新的数组,相当于复制了一遍数组.
> 返回的数组包含第一个参数指定的位置,到第二个参数前面一个位置之间的所有元素.
> 如果只指定一个参数,返回的数组将包含从开始位置到结尾的所有元素.
> 如果参数中出现负数,它表示相对于数组中的最后一个元素的位置的个数. - 是否改变原数组: 不改变原数组, 返回一个新的数组.
splice();
- 目的:从数组中删除元素、插入元素、或者同时完成这俩种操作.
参数:前俩个参数指定了删除,从第三个参数开始,指定拼接。
> 第二个参数指定了应该从数组中删除元素的个数,若省略,从起始点到数组结尾的所有元素都将被删除.
> 第三个参数开始,指被拼接到原数组的元素,区别于concat(), splice()会插入数组本身而非数组的元素(会扁平化数组)是否改变原数组: 改变原来的数组.
push()和pop();
- 目的:向数组中插入或删除元素.
- 参数:push()方法不限制参数,并不会扁平化数组。pop()方法无视参数.
- 行为:类似栈,从尾部插入或删除值,push()方法返回数组长度,pop()方法返回被删除的值.
- 是否改变原数组: 改变原来的数组.
unshift()和shift();
- 目的:向数组中插入或删除元素.
- 参数:unshift()方法不限制参数,并不会扁平化数组,当参数为一连串元素时,参数类似于被粘合在数组的头部,而不是改变参数的顺序。shift()方法无视参数.
- 行为:俩组方法和上面的方法类似,区别在于这组方法是在数据的头部操作.
- 是否改变原数组: 改变原来的数组.
toString()和toLocaleString();
- 目的::将数组的每个方法转化为字符串,并且输出用逗号分隔的字符串列表.
- 参数:俩个方法无视参数.
- 是否改变原数组: 不改变原数组, 返回一个新的字符串.
ES5的数组方法
map();
- 目的:将数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值.
- 参数:一个带有return的函数(函数中的return的值将被传递给新数组).
- 是否改变原数组: 不改变原数组,返回一个新数组。PS: 如果原数组是个稀疏数组,返回的也是相同方式的稀疏数组,它具有相同的长度,相同的稀缺元素.
filter();
- 目的:将数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值.
- 参数:一个带有return的函数(函数中的返回值如果为true或者能转化为true的值,就被添加到这个数组).
- 是否改变原数组: 不改变原数组,返回一个新数组,新数组是原数组的子集。PS: 如果原数组是个稀疏数组,和上面不一样,它返回的数组总是稠密的.
every()和some();
- 目的:对数组元素应用指定的函数判定.
- 参数:二者都需要一个函数.
> every() 返回true需要满足的条件为:数组中所有元素在函数判定下都为true则返回true,否则返回false. (PS:跟他的的汉语意思一样,每个)
> some() 返回true需要满足的条件为:数组中有一个元素在函数判定下为true则返回true, 否则返回false. ((PS:跟他的的汉语意思一样,一些)
> note: 执行every() 时,若有一个参数为false,则返回,忽略执行后面的参数.
> note: 而some() 则相反,若有一个参数为true, 则返回, 忽略执行后面的参数. - 对于空数组,every() 返回true, some()返回 false.
reduce()和reduceRight();(不太常用,偏用于数学计算)
- 目的:使用指定的函数将数组元素进行组合,生成单个值.
- 参数:reduce() 函数的第一个参数是执行化简操作的函数.第二个是传递给函数的初始值(如果无,函数将把数组中的第一个元素作为其初始值).
> 空数组上,不带初始值参数调用此函数将会报错.
> 如果只有一个元素且没有指定初始值,或者有一个空数组并且指定了一个初始值,reduce() 只是简单地返回那个值而不会调用化简函数.
> reduceRight() 和reduce() 作用一样, 区别在于它执行的顺序是从右到左. - 是否改变原数组: 不改变原数组,返回一个新数组。
indexOf()和lastIndexOf()
- 目的:搜索数组中具有给定值的元素。
- 参数:第一个参数指的是需要搜索的值,返回则找到第一个元素的索引或者如果没有找到就返回-1.
第二个参数是可选的,它指定数组中的一个索引,表示从哪里开始搜索,可以是负数,它代表相对于数组末尾的个数。最后一个元素是-1,倒数第二个元素为-2,以此类推... - lastIndexOf() 指从前往后查询. lastIndexOf() 指从后往前查询.
ES6的数组方法
Array.from();
- 目的:将类数组对象和可遍历对象转化为数组.
- 参数:上述对象以及第二个参数。第二个参数类似于数组中的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组.
- 用法:
const toArray = (() => Array.from ? Array.from : obj => [].slice.call(obj) )();
(兼容写法).
Array.of();
- 目的:将一组值转化为数组.
- 参数:无或无限(无时返回一个空数组).
copyWithin();
- 目的:在数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员).
- 参数:target(必须): 从该位置开始替换数据.
> start(可选):从该位置开始读取数据.
> end(可选):到该位置的前一个位置. - 是否修改原数组:修改原数组.
find()和findIndex();
- 目的:在数组内部, 找到第一个符合条件的数组成员.
- 参数:回调函数接受三个参数,分别表示当前值,当前位置,原数组.
俩个方法都接受第二个参数用来绑定函数中的this的值.(绑定作用域). - PS: 这两个方法都可以发现NaN,弥补了数组的IndexOf() 方法的不足。
fill();
- 目的:如其意,填充一个数组.
- 参数:第一个参数表示被填充的元素.
第二个参数表示填充的起始位置.
第三个参数表示填充的结束位置(指定位置之前一个).
ES7的数组方法
includes();
- 目的:表示某个数组是否包含给定的值,与字符串的includes()方法类似.
- 参数:第一个参数表示要查找的数,第二个参数表示搜索的起始位置,返回一个布尔值.
- 意义:推荐使用这个而不是indexOf()因为后者会对NaN造成误判.
关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结的更多相关文章
- ES5和ES6新的操作数组的方法(常用)
// 普通的for循环// var arr = ['张飞', '赵云', '马超', '刘备']// for (var i = 0; i < arr.length; i++) {// conso ...
- [js]es6语法: 字符串和数组的方法
s的方法 根据index取value: 取首尾项,arr[0], arr[arr.length-1] 根据value取index(判断是否包含子字符串): s.indexOf 栗子: 'maotai' ...
- 关于 ES5 & ES6 数组遍历的方法
ES5 数组遍历方法 1.for 循环 , , , , ] ; i < arr.length; i++) { console.log(arr[i]) } 2.forEach , , , , ] ...
- ES6入门概览二--数组
一 数组 1. Array.from() 将两类对象转为真的数组 : 类似数组的对象(伪数组,如arguments.document.getElementsByTagNames等)和可遍历对象(包括E ...
- ES6、ES7、ES8、ES9、ES10
ES6新特性(2015) ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才将其标准化.两个发布版本之间时间跨度很大,所以ES6中的特性比较多.在这里列举几个常用 ...
- ES6、ES7、ES8、ES9、ES10新特性
ES6新特性(2015) ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才将其标准化.两个发布版本之间时间跨度很大,所以ES6中的特性比较多. 在这里列举几个常 ...
- ES6之数组扩展方法【一】(相当好用)
form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作: ...
- Atitit js版本es5 es6新特性
Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...
- 简述ES5 ES6
很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...
随机推荐
- 上下箭头选中 选项事件 JS
//上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function (event) { ...
- java内省机制及PropertyUtils使用方法
背景 一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值.但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.bean ...
- 【详解】ERP、APS与MES系统是什么?
ERP是什么?MES是什么?APS又是什么?无论他们有什么功能,对企业有什么意义,不过都是计算机在读写一些数据而已.实际上这一切的本质不过是数据在硬盘和内存中快速的读和写. ERP是--,APS是-- ...
- iptables四个表与五个链间的处理关系
转载自:http://www.linuxidc.com/Linux/2012-08/67505.htm netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑 ...
- 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能
一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...
- STL-<queue>-priority queue的使用
简介: 优先队列是一种容器适配器,优先队列的第一个元素总是最大或最小的(自定义的数据类型需要重载运算符).它是以堆为基础实现的一种数据结构. 成员函数(Member functions) (const ...
- Coursera台大机器学习课程笔记5 -- Theory of Generalization
本章思路: 根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别.直接证明似乎很困难,本章继续利用 ...
- iOS 简单的分段下载文件
首先自己写个请求数据的类 首先.h文件 #import <Foundation/Foundation.h> @interface Downloaders : NSObject<NSU ...
- js'中的apply和call和bind的用法
apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数obj:这个对象将代替Function类里this对象args:这 ...
- 下载最新版本的Oracle Database
直接访问Oracle的官网就可以找到,鉴于Oracle经常改到下载面也我这里直接粘贴下载地址 http://www.oracle.com/technetwork/database/enterprise ...