「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。
我个人觉得要想进大厂,就必须学习了解算法和数据结构,经历了多次面试之后,也知道了算法和数据结构的重要性,所以,我也打算从今天开始,进入学习,下载了一下电子书,边看书,边跟着书的例子来敲一下代码,下面就开始总结一下对算法和数据结构的学习吧。
第二天:继续了解数组
数组的操作方法2
对于数组的操作方法,我们可以不使用js自带的方法。也可以使用各语言通用的操作(下面基本都是用数组实现,并没有往最好的实现去写),比如:
添加
首先创建一个数组
const arr = [1, 2, 3]
在尾部添加:
-
通用的操作(下面的代码只应该用作示范,不应该在真实项目中使用),首先我们需要知道js自带push方法的特性,比如:它可以一个参数,也可以个多个参数,添加完毕之后,返回添加完后数组的长度
-
// 直接添加一个 arr[3] = 4 // [1,2,3,4] -
// 实现可以添加多个push方法 Array.prototype.myPush = function (...value) { for(let i = 0; i < value.length; i++) { this[this.length] = value[i] } return this.length } arr.myPush(4) // [1,2,3,4]
-
-
js方法
arr.push(4)
在头部添加
-
通用的操作(下面的代码只应该用作示范,不应该在真实项目中使用),首先我们需要知道js自带unshift方法的特性,比如:它可以一个参数,也可以个多个参数,添加完毕之后,返回添加完后数组的长度
Array.prototype.myUnshift = function (...value) { for (let i = this.length; i >= 0; i--) { this[i] = this[i - value.length]; } for(let j = 0; j < value.length; j++) { this[j] = value; } return this.length } arr.myUnshift(4) // [1,2,3,4] arr.myUnshift(5,6) // [1,2,3,4,5,6] -
js方法
arr.unshift(4)
删除
删除尾部
-
通用操作,首先我们需要知道js自带pop方法的特性,比如:它不需要传参数、如果数组为空,则返回undefined,如果有长度,则返回被删除的那个元素。
Array.prototype.myPop = function () { if(this.length === 0) return undefined const value = this[this.length - 1] this.length -= 1 return value } arr.myPop() // 3 arr//[1,2] -
js方法
arr.pop() // 3
删除头部
-
通用操作(下面的代码只应该用作示范,不应该在真实项目中使用),首先我们需要知道js自带shift方法的特性,比如:它不需要传参数、如果数组为空,则返回undefined,如果有长度,则返回被删除的那个元素。
Array.prototype.myShift = function () { if(this.length === 0) return undefined const value = this[0] for(let i = 0; i < this.length; i++) { this[i] = this[i+1] } this.length -= 1 return value } arr.myPop() // 1 arr//[2,3] -
js方法
arr.shift() // 1