1. 程式人生 > >[譯]Javascript中的mutators

[譯]Javascript中的mutators

http amp 基於 ron out 狀態 turn 減少 blog

本文翻譯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