[譯]Javascript中的mutators
本文翻譯youtube上的up主kudvenkat的javascript tutorial播放單
源地址在此:
https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b
Javascript中有很多方法是可以用在數列對象上的.有的方法會改變數列對象,而有的則不會,那些會改變數列對象的方法叫做mutator方法
一下是一些非mutator的方法:
contains
indexOf
lastIndexOf
以下則是一些mutator方法
push
pop
shift
unshift
reverse
sort
splice
我們在20章討論過push(),pop(),shift()和unshift()方法.在本次視頻中我們將討論
sort
reverse
splice
Javascript sort方法:將一個數列中的元素排序.默認狀態下,sort()方法會把數列中的值轉化成string並且比較這些strings從而達到排序的目的.但是這樣只是對string很有效,對於數字的話則不然.我們來看個例子
例子:註意到string是很完美地被排序的
var myArray = ["Sam","Mark","Tom","David"]; myArray.sort(); document.write(myArray);
Output : David,Mark,Sam,Tom
現在,讓我們來看看給數字排序的例子
var myArray = [20, 1 , 10 , 2, 3]; myArray.sort(); document.write(myArray);
Output : 1,10,2,20,3
註意到數字並沒有按我們預期地排序.我們解決這個問題的方法就是給sort函數添加一個"比較函數"作為其參數.這個比較函數應該返回一個負數,0,或者正數
例子:
var myArray = [20, 1, 10, 2, 3]; myArray.sort(function (a, b) { return a - b }); document.write(myArray);
Output : 1,2,3,10,20
現在我們來討論一下這個比較函數是如何工作的.這個函數有兩個參數,(a,b)這個函數將a-
b的結果返回.如果返回值為
正數-則a比b大
負數-則a比b小
0-則a等於b
所以,基於返回的值,數列中的數字就可以被排序了
將數字降序排序:有兩種方法
1.將(a-b)改為(b-a)
例子:
var myArray = [20, 1, 10, 2, 3]; myArray.sort(function (a, b) { return b - a }); document.write(myArray);
2.升序排序後然後再用reverse()函數來達到降序的目的
例子:
var myArray = [20, 1, 10, 2, 3]; myArray.sort(function (a, b) { return a - b }).reverse(); document.write(myArray);
Output : 20,10,3,2,1
Javascript reverse方法:將數列中的元素反向排序
Javascript splice方法:給數列中增加或者減少元素
格式:array.splice(index,deleteCount,item1,....itemX)
index - 必須,指定往哪個地方加入或者移除元素
deleteCount - 必須,指定要移除多少個元素.如果設為0,則不會有元素被移除
item1,.....,itemX - 非必須,指定要被加入數列中的元素
例子:
var myArray = [1,2,5]; myArray.splice(2, 0, 3, 4); document.write(myArray);
Output : 1,2,3,4,5
例子:
var myArray = [1,2,55,67,3]; myArray.splice(2, 2); document.write(myArray);
Output : 1,2,3
[譯]Javascript中的mutators