當前位置:
首頁 >
重写数组的方法(改变原数组)
發布時間:2024/4/11
40
豆豆
生活随笔
收集整理的這篇文章主要介紹了
重写数组的方法(改变原数组)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下圖是我自我學習模擬數組時總結的一些重新數組的方法:
本文我們暫不討論不改變原數組的方法,只談改變原數組用到的 6 種方法。
改變原數組的方法
push()
按參數順序向數組尾部添加元素,返回新數組的長度
var color = ['red', 'green'] var color2 = color2.push(['blue','purple'])alert(color) // ['red', 'green'] alert(color2) // ['red', 'green','blue','purple']重寫:
Array.prototype._push = function() {for(let i = 0; i < arguments.length; i++) {this[this.length] = arguments[i]}return this.length }var arr1 = [1, 2, 3] console.log(arr1.push(4, 5)) // 返回新數組的長度 5 console.log(arr1._push(6, 7)) // 返回新數組的長度 7 console.log(arr1) // [1, 2, 3, 4, 5, 6, 7]pop()
刪除數組中的最后一個元素,并返回該元素
var color = ['red', 'green','blue','purple'] var color2 = color.pop()alert(color) // ['red','green','blue'] alert(color2) // ['purple'] Array.prototype._pop() = function() {if(this.length) {let res = this[this.length - 1]delete this[this.length]this.length--return res} }let arr2 = [1, 2, 3, 4, 5] console.log(arr2.pop()) // 返回刪除的元素 5 console.log(arr2._pop()) // 返回刪除的元素 4 console.log(arr2) // [1, 2, 3]sort()
默認情況下,sort() 會按照升序重新排列數組元素,即最小的值在前面,最大的值在后面。因此,sort() 會在每一項上調用 string() 轉換函數,然后比較字符串來決定順序。即使數組的元素都是數值,也會先把數組轉換成字符串再比較、排序。例如:
let values = [0, 1, 5, 10, 15] values.sort() console.log(values) //0,1,10,15,5一開始數組中的數值的順序是正確的,但是調用 sort() 會按照這些數值的字符串形式重新排序。所以它可以接收一個比較函數,用于判斷哪個值應該排在前面。
function compare(a, b) {if(a < b) return -1else if(a > b) return 1else return 0 }這個比較函數可以適用于大多數數據類型,可以把他當做參數傳給 sort(),例如:
let values = [0, 1, 5, 10, 15] values.sort(compare) console.log(values) // 0,1,5,10,15當然,也可以使排序產生降序效果,只需要把返回值交換一下即可:
function compare(a, b) {if(a < b) return 1else if(a > b) return -1else return 0 }let values = [0, 1, 5, 10, 15] values.sort(compare) console.log(values) // 15,10,5,1,0重寫:
var arr = [4, 1, 6, 9, 3, 2, 8, 7] var arr2 = [4, 1, 6, 9, 3, 2, 8, 7] console.log(arr.sort());Array.prototype.mySort = function (arr) {for (var i = 0; i < this.length; i++) {for (var j = i + 1; j < this.length; j++) {if (this[i] > this[j]) {var temp = this[i]this[i] = this[j]this[j] = temp;}}}return this }console.log('mySort:',arr2.mySort());reverse()
將數組倒敘,改變原數組
Array.prototype.myReverse = function () {var left = 0,right = this.length - 1;while (left < right) {var temp = this[left];this[left] = this[right];this[right] = temp;left++;right--;} } var arr2 = [1, 3, 5, 7, 9] console.log('before:', arr2) myReverse(arr2) console.log('after:', arr2)shift()
刪除數組第一個元素,并返回該元素
var arr = [1, 3, 5, 7] console.log(arr.unshift(9)) console.log(arr)Array.prototype.myUnshift = function () {var L = this.length;var newArr = arguments.lengthfor (var i = L + newArr - 1; i >= 0; i--) {if (i > newArr - 1) {this[i] = this[i - newArr];} else {this[i] = arguments[i];}}return this.length; }var arr2 = [1, 3, 5, 7,]console.log('myUnshift:', arr2.myUnshift(9)); console.log('myUnshift:', arr2)unshift()
向數組開頭增加一個或多個元素,并返回新的長度
var arr = [1, 3, 5, 7] console.log(arr.unshift(9)) console.log(arr)Array.prototype.myUnshift = function () {var L = this.length;var newArr = arguments.lengthfor (var i = L + newArr - 1; i >= 0; i--) {if (i > newArr - 1) {this[i] = this[i - newArr];} else {this[i] = arguments[i];}}return this.length; }var arr2 = [1, 3, 5, 7,]console.log('myUnshift:', arr2.myUnshift(9)); console.log('myUnshift:', arr2)總結
以上是生活随笔為你收集整理的重写数组的方法(改变原数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 热门剧本杀与 SaaS 的不解之缘
- 下一篇: 如何让你的大文件上传变得又稳又快?