这几个数组方法都是很常用的,也很简单,但老是搞不清他们的返回值,所以今天闲着没事写篇文章理一理。
push往数组后面追加一个元素,unshift往数组前面追加一个元素,pop删除数组最后的一个元素、shift删除数组第一个元素
注:push、unshift返回的是新数据长度,pop、shift返回的是删除的元素,四个方法都会改变原数组
总结:添加返新数组的长度、删除返删除的元素,都会改变元素组
splice和slice这两个相信是很多人容易搞混的,他们不仅长的像,功能也有一些一样这里主要讲下他们的不同点,
const arr = [1,2,3,4]
const a = arr.splice(2)
console.log(a) //[3,4]
console.log(arr) //[1,2]
const arr = [1,2,3,4]
const a = arr.slice(2)
console.log(a) //[3,4]
console.log(arr) //[1,2,3,4]
从上面例子可以看出,当只传一个参数值,splice、slice返回值是一样的,但有一点要特别注意:slice并没有改变原数组,这也是他和其他五种方法都不一样的地方,基于这个特性,我们可以用slice来快速复制数组,let arr2=arr.slice(),这样即可
接着我们看看他们的第二个参数
const arr = [1,2,3,4]
const a = arr.splice(1,3)
console.log(a) //[2,3,4]
console.log(arr) //[0]
const arr = [1,2,3,4]
const a = arr.slice(1,3)
console.log(a) //[2,3]
console.log(arr) //[1,2,3,4]
splice第二个参数表示从索引开始要截取的元素长度,slice则是截取的结束索引,既然是结束索引,就可以是负数,splice第二个参数为负数虽然不会报错,但返回一直为空数组,还有一点要注意,slice截取时包含前索引,不包含后索引