JS-Array方法

371 阅读4分钟

1.数组头部操作

graph TD
A["数组头部操作"] --> B["unshift()"]
A["数组头部操作"] --> C["shift()"]
- unshift()
    + 向数组的最前端添加一个或多个值
    + 如果写多个unshift(),则最后写的在最前面,分批插入和一次性插入结果是不一样的
    + unshift改变了原数组,并返回修改后数组长度
- shift()
    + 删除数组最前端的值
    + 改变了原数组,返回被删除的值

2.数组尾部操作

graph TD
A["数组尾部操作"] --> B["push()"]
A["数组尾部操作"] --> C["pop()"]
- push()
     + 向数组的末尾添加一个或多个值
     + push改变了原数组,并返回了修改后的数组长度
- pop()
     + 删除数组的最末尾的一个值
     + 改变了原数组,返回被删除的值

3. splice:

  - 参数1:删除开始的下标的位置
  - 参数2:从删除位置开始数,删除元素的长度
  - 返回:删除的值组成的数组
  
  splice方法添加值
                - 参数1:开始删除的下标
                - 参数2:删除的长度
                - 后边所有的参数:在删除位置添加的元素

4. concat(合并数组)

  - 合并数组 把一个或多个值合并到数组的末尾
  - 可以把一个数组合并到另一个数组中(把要合并的数组展开,只能展开一层)
  - 不会改变原数组,而是返回一个新的合并后的数组
  

5.截取数组

- splice
    - 因为删除数组返回被删除的值,所以可以把被截取的元素删除,拿到返回值
    - 参数2省略 默认到数组的末尾
    - 可以从某个位置开始截取,规定截取长度

- slice
    - 可以截取指定数组中的元素
    - 参数1:开始截取的位置
    - 参数2:结束的位置,不包含结束位置(如果省略,默认到末尾)
    - 原数组不会发生变化,返回一个截取值组成的新数组
     

6. 数组倒序

reverse方法();
            改变了原数组,并返回了原数组的引用
var arr = ["a", "b", "1", "a", "c", "f", "e"];
var re = arr.reverse();

7.sort排序

 sort方法:
            - 在原数组的基础上对数组的元素进行排序
            - 如果在调用sort的时候没有传入任何参数,则会按照字符串的格式对数组的元素进行排序

            - 如果想按照其他的顺序进行排序,就必须向sort方法中传入比较函数
            - 比较函数有两个参数,比较函数会进行比较这两个参数
            - sort内部
                - a是后边的值,b是前边的值
                - return的值只要是负数则交换顺序,如果是0或者正数则不交换
                
 Array.sort((a,b)=>{
     return a-b
 })
 

8.join方法:

- 把数组转为字符串
- 可以在join方法中传入参数,代表替代字符串中的逗号
- 不会改变原数组,返回一个字符串
- 原理 》 是把每一个元素调用了toString方法转字符串(null和undefined转为空串)

9.indexOf和lastIndexOf:

 indexOf:
            - 检测元素在数组中第一次出现的位置
            - 如果当前元素在数组中没有出现,则返回-1
            - 参数2可以规定从第几位开始检测(可以为负,倒着数)


 lastIndexOf:
            和indexOf一样,只不过是从右向左查找



10.toString()和toLocalString():

 toString()
            把数组转字符串的方法,有时在一些隐式转换的时候也会调用toString
            
            
 toLocalString()
            根据电脑运行环境决定转换的值
            

11.forEach

 forEach():
            - 专门用来遍历数组
            - forEach接收一个回调函数作为参数,数组的值会依次的进入函数执行
            - 回调函数接受三个参数
                - 参数1:当前进入函数的数组的元素
                - 参数2:当前进入函数的数组的元素的下标
                - 参数3:当前数组的引用

            - 空位数组的空位不会进入forEach中
            - forEach没有返回值
            - forEach中的回调函数的this是指向window
            

12.map

    map映射数组:
            - 参数和forEach类似
            - 遍历数组,并返回一个和原数组长度一样的数组
            - 原数组每次会进入回调函数执行,当前回调函数的返回值就是映射数组对应位置的值

    对比forEach:
            - 都是遍历数组,map会返回一个和原数组一样长度的数组,forEach没有返回值
            

13.every和some

   every方法
            - 和forEach的书写格式一致
            - 会把数组的每一个值拿到回调函数中去,如果有一个回调函数返回false,则停止遍历,every直接返回false
            - 如果全局遍历结束,回调函数都返回true,则整个every方法返回true

   some方法:
            - 和forEach的书写格式一致
            - 会把数组的每一个值拿到回调函数中去,如果有一个回调函数返回true,则停止遍历,some直接返回true
            - 如果全局遍历结束,回调函数都返回false,则整个some方法返回false
 

14.filter

   filter方法:
            - 筛选过滤
            - 和forEach书写方法一致
            - 返回一个数组,原数组的值依次进入回调函数,当回调函数返回true的时候,把这个值放入返回的新数组中