用 splice 函数分别实现 push、pop、shift、unshift 的方法

主要需要注意的是不同方法他们本身返回的值应该是什么,是数组当前的长度,还是取出的元素的值,再在splice函数里面进行相应的return就可以了。具体如下:

2018.7.23 号关于此博客对两个返回元素值的函数进行了更正,返回 length 长度的没有影响。详见内容


用 splice 函数实现 push 方法

1
2
3
4
5
6
7
8
9
10
11
function samePush(arr, value){
arr.splice(arr.length, 0, value)
return arr.length
}

var arr = [3, 4, 5]
//使用push方法
arr.push(10) // arr 变成[3,4,5,10],返回4(length长度)

//调用函数samePush()
samePush(arr,12) // arr变成[3, 4, 5, 10, 12],返回5(length长度)


用 splice 函数实现 pop 方法

这里需要进行更正,如果按照之前的

arr.splice(arr.length-1,1)```这样写,返回的是一个含有一个数值的数组,并不是元素值,所以还需要取出他的0位置元素,将它变成值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
![更正](https://upload-images.jianshu.io/upload_images/12904618-b394ed01cbb1a351.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```JavaScript
function samePop(arr) {
// 之前错误写法 return arr.splice(arr.length-1, 1)
return (arr.splice(arr.length-1, 1))[0] //详细分析见上更正图
}

var arr = [3, 4, 5, 16, 17]
//使用pop方法
arr.pop() // arr 变成[3, 4, 5, 16],返回17(取出的元素值)

//调用函数samePop()
samePop(arr) // arr 变成[3, 4, 5],返回16(取出的元素值)


用 splice 函数实现 shift 方法

同上、这里同样需要更正,原因同上
更正

1
2
3
4
5
6
7
8
9
10
11
function sameShift(arr) {  
// 之前错误写法 return arr.splice(0,1)
return (arr.splice(0,1))[0] //详细分析见上更正图
}

var arr = [3, 4, 5, 16, 17]
//使用shift方法
arr.shift() // arr 变成[4, 5, 16, 17],返回3(取出的元素值)

//调用函数sameShift()
sameShift(arr) // arr 变成[5, 16, 17],返回4(取出的元素值)


用 splice 函数实现 unshift 方法

1
2
3
4
5
6
7
8
9
10
11
function sameUnshift(arr,value) {  
arr.splice(0,0,value)
return arr.length
}

var arr = [3, 4, 5, 16, 17]
//使用unshift方法
arr.unshift(22) //arr 变成[22, 3, 4, 5, 16, 17],返回6(length长度)

//调用函数sameUnshift()
sameUnshift(arr,11) // arr 变成[11, 22, 3, 4, 5, 16, 17],返回7(length长度)


参考链接

参考 对象 / JSON / 数组
参考 浅谈常见数组的方法

本文结束  感谢您的阅读
0%