[譯]Javascript中的mutators

來源:互聯網
上載者:User

標籤:output   rip   兩種方法   string   col   strong   fun   排序   必須   

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.