2017-07-19 61 views
-1

我正在學習javascript和一些關於javascript中排序方法的問題,是的,在你問我已閱讀其他問題之前,我明白這一點:Sort()按參數傳遞?在javascript

「小於0:」a 「被排序爲低於」b「的索引 零:」a「和」b「被認爲是相等的,並且不執行排序 大於0:」b「被排序爲比」一個」。」大約從sort()函數的主要問題

那,但我不明白的是:

var array=[5, 2, 1, 10] 
 

 
array.sort(function(a,b) { 
 
    return a - b}) 
 

什麼是ab的目的,在參數函數,函數期間將要使用的參數的值是多少?它被告知返回a-b但是在這個過程中誰將是ab?我沒有要求console.log()的例子。如果ab是我的參數表,如果我甚至沒有通過ab的值,函數如何工作?

在其他語言中,必須通過ab的值。

+0

你的根本問題似乎是,你不明白,你傳遞什麼作爲參數傳遞給'sort'是一個函數。請參閱https://stackoverflow.com/questions/705173/what-is-meant-by-first-class-object –

+0

Aaa ...不是文檔中所有這些問題的答案嗎? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort – Ionut

+0

檢查此鏈接的完整說明: - https://developer.mozilla.org/en/docs/ Web/JavaScript/Reference/Global_Objects/Array /排序 並特別檢查此部分: - http://prntscr.com/fxjawn –

回答

1

compareFunction:指定一個函數,該函數定義排序 的順序。如果省略,則根據每個字符的 Unicode代碼點值,根據每個 元素的字符串轉換對數組進行排序。

你在array.sort中傳遞的是一個稱爲比較函數的函數。它將做什麼基本上是什麼時候它將排序你的數組,如果將排序它將在任何給定的時間比較數組的兩個元素,並根據提供的函數的實現細節進行排序。

比方說你有一個數組[2 , 4, 3] 鑑於你的排序功能將通過在比較元素比較2,3並返回結果2 - 4是-2,你已經知道< 0意味着該a元素必須在更低的是2會先到達。它將比較4 - 3這是> 0比意味着需要之後。

該文檔包含所有問題的答案。這裏

Sort Documentation on MDN

+0

謝謝你Raunak Sett。所以這意味着它不會給你的排序函數參數的名稱,它仍然會像compareFunction一樣行事嗎? –

+0

是它的sort函數的引用,它會調用它給第一個參數作爲第一個要比較的元素,第二個參數作爲另一個元素進行比較。 –