Day 15
有付出一定有收穫,有 push ㄧ定有增加,但是要排隊喔~
介紹陣列方法的第一天,想先請大家看一下底下的這張圖,在上一篇,我們依 JavaScript 的更新版本與方法的功能來列出所有陣列方法(Array Methods)。
這張圖上的所有方法,皆是 Chrome 瀏覽器有支援的方法,如果擔心與其他瀏覽器的問題,可以到 Can I use 查閱,看看我們使用的功能是否和其他瀏覽器有相容性的問題。
圖中的陣列方法以「回傳的是什麼」和「是否更動陣列」來區分的原因,是因為當我們實做 JavaScript 的時候,無論是處理陣列或利用陣列方法來達到一些目的,甚至在刷演算題時,都需要清楚的知道這些方法回傳的是什麼,或是會不會更動到原本的陣列,以方便接下來的處理。而將不同的回傳值來區分,也有助於記憶,不然要記這麼多方法,真的是不容易啊! 吞銀杏也不一定有效啊
今天我們要介紹的陣列方法是push()
,主要負責從陣列尾端來「新增」元素,這是我們常會用到的方法,新增資料就靠它。
push()
Array.prototype.pop() - JavaScript | MDN
原型: Array.prototype.push()
功能: 會將一或多個的值,加入至一個陣列中。
改變: 此方法會改變原陣列的長度和內容。
語法: arr.push(element1[, …[, elementN]])
回傳值: 呼叫此方法執行的變數時,會回傳執行後的新陣列長度( length 屬性值)。
參數: elementN, 要增加至陣列末端的元素。
範例:
1 | const colors = ['yellow', 'Orange', 'Red']; |
也可以一次增加多個元素:
1 | colors.push('Violet', 'Green', 'Cyan'); |
push() 方法原型
push()
是用什麼方法寫出來的呢?有兩種方法。
為了避免覆蓋到原生的push()
方法,我們可以把這個方法另外取名為push2
和push3
,並將他們放到瀏覽器的開發者工具。
第一種方法:我們可以試著在for
迴圈裡,把this
用console.log
印出來,就可觀察到每跑一次迴圈,就會加上我們放在參數arguments
裡的元素。
1 | // push2(arguments) |
這裡的arguments
指的是我們放在push()
裡的參數。this
則是指向我們原本的陣列。
1 | const arr = [1, 2]; // `this` |
第二種方法:使用splice()
方法特性,和其餘參數的方法,把參數增加到原本的陣列。
1 | Array.prototype.push3 = function(...rest) { |
這裡的this
是指向我們原本的陣列。splice(this.length, 0, ...rest)
則為splice(陣列長度,0, ...rest)
ES6 的其餘參數...rest
:可以將陣列或物件中的資料取出成獨立變數。
1 | const arr = [1, 2]; // `this` |
不知對於今天的解釋,有沒有幫助到大家,更了解push()
的運作原理和使用方法?
我們明天再繼續介紹pop()
囉~
如有需要改進的地方,拜託懇求請告知,我會盡量快速度修改,感謝您~