前言
之前在项目开发的时候,因为对于数组有些方法不是很明确,导致有时候在进行数组操作的时候,就会有点bug,所以现在去好好学习下ES5的数组方法。这样在一些框架的使用上也不会导致一些低级的错误。
7个可以改变原数组的方法
数组方法很多,但是ES5中只有7个可以改变原来数组的方法,如果单纯记得话,很容易忘记。所以我按照增删+排序来记会清晰些。
增加
对数组进行添加元素的话有三个,但是另个方法比较特殊,它还可以进行删除的用处。在头部进行添加的unshift、在尾部进行添加元素的push、以及特殊的splice。前两个方法的参数都是传递要添加的元素,然后返回的是数组的长度。而splice第一个参数是索引值,可以是正数也可以是负数,正数的话就是左开始从0到数组长度减一,负数的参数就是从最后一个元素往右边依次为-1,-2...,就是要从什么地方开始,第二个参数就是删除多少个元素,第三个参数就是要从删除元素的末尾添加的元素。这个函数的返回值是如果是删除的,就返回删除元素的新数组。
删除
删除数组的元素也刚好是三个,就是头部进行删除的shift、尾部删除元素的pop、以及上面说的splice。但是和添加的数组方法的不同的是删除是不需要参数,而且他们的返回值值都是被删除的元素。
排序
剩下两个都是与排序有关的,reverse是颠倒数组元素的顺序,就比如说[1, 2, 3],调用了reverse函数,就会变成[3, 2, 1]。然后sort默认指定数组按照ASCI码进行比较,而且比较的是按照一位一位进行比较,只有在一位比较是相同才会比较下一位。当然sort可以指定自己的排序方法,通过传一个回调函数,这个回调函数必须要有两个形参,然后还要返回一个Boolean值。
不改变数组的方法
其实不改变数组的方法也是可以总结出三种,截取、分割、合并。
截取
截取的函数有时候容易和splice混淆,毕竟就少了个p,slice函数接收两个参数,第一个是开始截取的索引值,第二个是截取的结束位置,这个结束的位置是不包含在里面的。然后返回一个被截取的新数组。
分割
分割的两个函数是将字符串转化成字符串数组的split、将数组按照一定的方式分割成字符串的join。split有两个参数,第一个参数是用什么方式进行截取,第二个参数是返回的字符串数组长度。如果指定的长度小于截取的数组长度,那有些数组元素就会被舍去。返回值就是一个按照指定方式分割的字符串数组。而join函数就是第一个参数为分割数组的字符,返回的是一个按照指定分割字符的字符串。它与split相比,前者是将数组转换成字符串,并且参数仅有指定分割的字符,而后者则是将一个字符串转换成字符数组,所以也就多了个指定字符数组长度的参数。
合并
concat就是一个单单只是做数组合并的方法,第一个参数可以是元素,也可以是数组。通过将参数添加到调用该方法的数组后面,谁调用这个函数,就是在谁的后面合并,返回的是一个合并后的数组。