JS 数组的常用方法

211 阅读6分钟

1.push

语法:数组.push(数据)

作用:向数组末尾添加数据

返回值:追加数据后,数组最新的长度(length)

2.pop

语法:数组.pop()

作用:删除数组最后一条数据

返回值:被删除的数据

3. unshift

语法:数组.unshift(数据)

作用:向数组开头添加数据

返回值:添加数据后数组最新的长度(length)

4.shift

语法:数组.shift()

作用:删除数组第一条数据

返回值:被删除的数据

5.reverse

语法:数组.reverse()

作用:反转数组

返回值:反转后的数组

6.sort

语法1:数组.sort()

     作用:会将数据转化为字符串后,一位一位的对比

语法2:数组.sort(function(a, b) {return a - b})

     作用:会按照数字大小升序排序

语法3:数组.sort(function(a, b) {return b - a})

     作用:会按照数字大小降序排序

返回值:排序后的数

7.splice

语法1:数组.splice(开始索引,多少个)

     作用:截取数组部分内容

语法2:数组.splice(开始索引,多少个,插入的数据1,插入的数据2,插入的数据3……)

     作用:截取数组部分内容,并插入新的数据

返回值:截取出来的部分内容组成的数组

数组的方法能够改变原数组的就只有上边说的7个

8.slice

语法:数组.slice(开始索引,结束索引)

参数:

  •  包前不包后,包含开始索引位置的数据,不包含结束索引位置的数据

  • 不写开始索引,默认是0;不写结束索引,默认是数组.length

  • 参数支持写负数,表示倒数第几个,其实就是 length + 负数

作用:截取数组部分内容

返回值:截取出来的部分内容组成的新数组

 

面试题:splice与slice的区别

数组中有两个方法,splice与slice,你能描述一下它们两个的区别吗?

     1.参数含义不同,介绍一下参数哪里不同

     2.splice会改变原数组,slice不会

9.concat

语法:原始数组.concat(数组1,数组2,……,数据1,数据2,……)

作用:进行数据拼接,把数组……数据之类的小括号里的内容,拼接在原始数组中

返回值:拼接好的数组

10.join

语法:数组.join('连接符')

作用:使用“连接符”把数组内的每一个数据连接成一个字符串(不写连接符,默认使用的是逗号)

返回值:连接好的字符串

11.indexOf

语法1:数组.indexOf(要检查的数据)

      作用:从前到后(从左到右)检查该数据第一次在该数组内出现的索引

 语法2:数组.indexOf(要检查的数据,开始索引)

     作用:在开始索引的位置,按照从左到右的顺序,检查该数据第一次在该数组内出现的索引

返回值:

找到数据的情况下,会将该数据第一次出现的下标(索引)返回

没找到的情况下,会直接返回一个 -1

备注:开始索引不写的时候,默认是0

12.lastIndexOf

语法1:数组.lastIndexOf(要检查的数据)

     作用:从后向前(从右向左)检查该数据第一次在该数组内出现的索引

语法2:数组.lastIndexOf(要检查的数据,开始索引)

     作用:在开始索引的位置,按照从右到左的顺序,检查该数据第一次在该数组内出现的索引

 返回值:找到数据的情况下,会将该数据第一次出现的下标(索引)返回

     没找到的情况下,会直接返回一个 -1

备注:开始索引不写的时候,默认是0

13.forEach

语法:数组.forEach(function (item,index,origin) {})

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:遍历数组

返回值:该方法永远没有返回值(undefined)

14.map

语法:数组.map(function(item,index,origin){}) 三个参数的意义和forEach相同

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:映射数组

返回值:返回一个和原数组长度相同的数组,但是内部数据可以经过我们的映射加工

映射加工:就是在函数内以return的形式书写

面试题: forEach和map的区别

数组常用的遍历方法中,有一个forEach和一个map,这两个方法有什么区别?

 1. forEach 的作用是用来遍历数组,而 map 的作用是用来映射数组

 2. forEach 没有返回值,而 map 是可以有返回值的

15.filter

语法:数组.filter(function(item,index,origin){}) 三个参数的意义与forEach相同

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:过滤数组

返回值:返回一个新数组,内部存储的是原始数组过滤出来的部分内容

过滤条件:以return的形式书写

16.find

语法:数组.find(function(item,index,origin){})

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:在数组内查找满足条件的第一项

返回值:找到的数据;如果没有找到,返回的是undefined

查找条件:以return的形式书写

17.findIndex

语法:数组.findIndex(function(item,index,origin){})

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:在数组内查找满足条件的第一项的下标

返回值:找到的数据的下标;如果没有找到,返回的是 -1

查找条件:以return的形式书写

18.some

语法:数组.some(function(item,index,origin){})

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:判断数组内是否有一个满足条件

返回值:一个布尔值  true / false

判断条件:以return的条件书写

19.every

语法:数组.every(function(item,index,origin){})

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:判断数组内是否全部满足条件

返回值:一个布尔值  true / false

判断条件:以return的条件书写

20.reduce

语法:数组.reduce(function(prev,item,index,origin){},init)

  • prev:表示初始值或者上一次的运算结果

  • item:数组的每一项的值

  • index:数组的每一项对应的下标

  • origin:原始数组(了解即可,一般没人用)

作用:用来实现叠加效果

返回值:最终叠加的结果

注意:

  • 叠加条件以return的形式书写

  • prev第一次的值,如果你传递了init,就是init的值;如果没有传递init,那么就是数组[0]的值

  • 如果传递了init,循环执行数组.length次;如果没有传递init,循环执行数组.length-1次

  • init不写,item直接从下标1开始