2013-07-29 24 views
1

我已經寫了自定義排序例程(sortArray(a, b))進行排序的陣列,我有。參數提供給一個匿名函數

如果我這樣稱呼它

a.sort(function (v1, v2) { return sortArray(v1, v2); }); 

一切工作正常。

如果我這樣稱呼它:

a.sort(sortArray(v1, v2)); 

v1和v2引發錯誤,爲不確定。

有沒有辦法利用由的.sort()方法傳遞的參數,而無需創建一個匿名函數初始接收它們,然後將它們傳遞給一個用戶定義的功能?

回答

6

Array.prototype.sort需要函數引用,但您試圖調用sortArray並傳遞該調用的返回值。你應該傳遞一個參考給你的函數:

a.sort(sortArray); 

由於sortArray已經需要兩個參數,它應該只是工作,v1v2會被自動傳遞。

+0

什麼明確的迴應!它想要一個函數引用絕對打開燈! 順便說一句,它返回一個數字,排序在acordance與返回數字的符號來完成。 –

+0

很高興幫助,@BrianWren!你是對的,比較函數應該返回一個數字,我忘記了。 – bfavaretto