#关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结

##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造成误判.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,504评论 1 51
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,096评论 0 21
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • 原来的模型关系经过晓乐的修改,可我还没整理复习那个,就忙着写这些接口了。我们这里讨论商品,产品和购物车之间的一些关...
    小小奶狗阅读 407评论 0 0