2017-10-04 49 views
-2

我知道排序數組,但我有我想知道的問題。arrayObj.sort的說明([sortFunction])

例如:

var array = [9,3,0,-2,15]; 

那麼,讓我們對其進行排序:

function sortFunction(a, b){ 

    if(a < b) return -1; // or any number that less than zero, but why? 
    if(a > b) return 1; // or any number that above zero, but why? 
    if(a = b) return 0; // but why? 

    // I know it may be easier a - b, I've written it for clarity 

} 

array.sort(sortFunction); //so we'll get correct result 

如何理解爲什麼它返回-1,1和0排序數組?

P.S.對不起,如果問題似乎很愚蠢,我還沒有在Google中找到答案。

+0

閱讀此https://stackoverflow.com/questions/234683/javascript-array-sort-implementation –

+1

閱讀[文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description),它解釋得很清楚 – George

+0

我被誤解了( – Jarvis

回答

2

MDN

  • 如果的compareFunction(A,B)小於0,排序一個比B,即較低的索引至上。
  • 如果compareFunction(a,b)返回0,則相對於彼此保持a和b不變,但是相對於所有不同的 元素進行排序。注意:ECMAscript標準並不保證這種行爲,因此並非所有瀏覽器(例如約會至少2003年的 的Mozilla版本)都尊重這一點。
  • 如果compareFunction(a,b)大於0,則將b排序爲比a更低的索引。

有三個結果,所以有三個可能的返回值。

+0

我讀過了,我已經知道這個信息,我想,我被誤解了 – Jarvis