2015-04-06 43 views
2

下面是給出的工作代碼作爲對實現對象排序問題的答案,它工作得很好。由於我是JavaScript新手,我不明白返回類型的確切含義。任何人都可以解釋嗎?返回類型1,-1和0在排序函數中做什麼?

var people= [ 
    { 
     "f_name": "john", 
     "l_name": "doe", 
     "sequence": "0", 
     "title" : "president", 
     "url" : "google.com", 
     "color" : "333333", 
    } 
    // etc 
]; 

function sortResults(prop, asc) { 
    people = people.sort(function(a, b) { 
     if (asc) return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0); 
     else return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0); 
    }); 
    showResults(); 
} 

參數「道具」是propertyName的基礎上排序需要做的,和ASC是一個boolean類型的排序在遞增順序,如果真或倒序如果假的。

+2

*「由於我是jquery的新手,我不明白返回類型的確切含義。」*。它與jQuery無關。這是純javacsript基礎知識。檢查'Array.prototype.sort'方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort – dfsq 2015-04-06 08:17:12

+3

提示:如果它不以'$('或'jQuery(',它*可能*不是jQuery。 – Kobi 2015-04-06 08:18:47

+0

@Kobi除非..'var itsNotJQuery = $ .noConflict()':) – dfsq 2015-04-06 08:20:10

回答

4

這是Array.sortjQuery無關。請記住jQuery是另一個在javascript中開發的庫。

The MDN explains this already:

如果compareFunction被提供時,所述陣列元件根據比較函數的返回值排序 。如果 兩個元件被比較,然後a和b是:

  1. 如果compareFunction(a, b)小於0,排序a到較低的指數大於 b,即a至上。

  2. 如果compareFunction(a, b)回報0,離開ab不變,相對於彼此,但對於所有 不同的元素進行排序。注意:ECMAscript標準不保證 這種行爲,因此並非所有瀏覽器(例如,追溯至2003年的Mozilla版本 )都尊重這一點。

  3. 如果compareFunction(a, b) 大於0,則將b分類爲低於a的索引。給定的一對特定的 元件ab作爲它的兩個參數的時

  4. compareFunction(a, b)必須總是返回相同的值。如果不一致的結果是 然後返回排序順序undefined

這不是強制性的,只-11返回。

+0

非常感謝,這真的很有用:) :) – 2015-04-06 10:17:41

+0

@AbhijithKishore很高興它是:) – 2015-04-06 10:41:00

0

那麼,它返回2個元素應該相對於另一個排序。

如果它是-1,那麼它意味着元素應該交換,因爲它們是相反的順序。因此,如果它是1,這意味着元素的順序是正確的。

如果它是0,那麼它意味着元素是相等的或者具有相同的位置,所以它們的順序無關緊要。

相關問題