私はこれにかなりの時間を費やしましたが、ここでバグを発見できませんでした。
基本的にvar test_arr = [['79',0],['8',1],['30', 2],['580',3],['59',4]]
、関数から生成するタイプの多変量配列があります。私の並べ替え fxnvar 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
として、結果を呼び出したところ、正しくソートされた出力が得られましたが、これは私の混乱を固めるだけでした。
私は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
私は何を逃したのですか?
編集2
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]]