我在這方面花了相當多的時間,並且無法在這裏發現錯誤。在多維數組中排序失敗
本質上,我有一個多元數組,其類型var test_arr = [['79',0],['8',1],['30', 2],['580',3],['59',4]]
,我從一個函數生成。它不像一個正常的數組,因爲我的排序fxn var sort_arrays = function(a,b) {return a[0]-b[0]};
未能正確排序數組值。
我試圖確保我有一個實際的數組,並且我沒有調用另一種排序方法。
因此:
console.log(arr_test.sort(sort_arrays));
給出:[[8,1],[30,2],[59,4],[79,0],[580,3]]
然而,在我的FXN調用此,
console.log(input_kde.sort(sort_arrays));
,得出:[...,[580, 0.002],[59,0.001]]
在試圖生成一些打印輸出,我在我的資源上撥打了.toString
ult,並得到正確的排序輸出,這隻會鞏固我的困惑。
我試圖用parseFloat(a[0])
明確類型鑄造無濟於事。
我還試圖以確認,這確實是一個數組:
console.log(typeof(input_kde)); //#> object
console.log(input_kde.constructor); //#> function Array() { [native code] }
console.log(input_kde instanceof Array); //#> true
此外,input_kde [0]是一個數組,input_kde [0] [0]是一個數字
console.log(input_kde[0] instanceof Array); //#> true
console.log(typeof(input_kde[0][0])); //#> number
我錯過了什麼?
EDIT2
var input_kde = [[22,0.0017095221275204712],[24,0.001712291003699343],[28,0.001716821328044571],[307,0.0009792081392809542],[33,0.0017205981968323918],[34,0.0017211029300063302],[341,0.0010085669284820244],[35,0.0017215244128879188],[387,0.0010558490092862406],[4,0.0016696065108796395],[40,0.0017223891946762664],[448,0.0010667514507313397],[491,0.0010124434821844265],[519,0.0009480280002363708],[580,0.0007465298453339767],[59,0.0017073128314605394]]
其他事情要確認:(1)'input_kde [0]'是一個數組。 (2)'sort_arrays'實際上被調用。 (對於調試,你可以臨時添加一些像if(!window.foo){console。日誌(「調用sort_arrays」); } window.foo = true;'這樣它就會在第一次調用時記錄日誌。)(3)'input_kde [0] [0]'是一個字符串。 – ruakh 2012-07-23 20:29:18
@ruakh(2)'sort_arrays'被調用,因爲.toString不會給出正確的答案,我在arr_test的情況下使用sort_arrays。 – Ryanmt 2012-07-23 20:31:55
那麼......將結果賦值給值似乎會使其工作。否則它返回一個未排序的數組。 – Ryanmt 2012-07-23 22:24:14