2016-04-04 50 views
0
function getIndexToIns(arr, num) { 

    var args = Array.prototype.join.call(arguments); 

    function compareNumbers(a, b) { 
    return a - b; 
    } 
    args.sort(compareNumbers); 

    return args; 

} 

getIndexToIns([40, 60], 50); 

cevap

2

ile

var args = Array.prototype.join.call(arguments); 

değiştirin. Dizi benzeri nesneleri dizilere dönüştürmek için, bunun yerine Array.prototype.slice.call'u kullanmanız gerekir.

Function.prototype.apply

var args = Array.apply(null, arguments); 

ile veya

var args = Array.prototype.join.call(arguments); 
bu

var args = Array.prototype.slice.call(arguments); 

ile

veya değiştirin Array.from

var args = Array.from(arguments); 

en temiz çözümES6 rest parameters

function getIndexToIns(...args) { 

    function compareNumbers(a, b) { 
    return a - b; 
    } 
    args.sort(compareNumbers); 

    return args; 

} 

getIndexToIns([40, 60], 50); 
0

Array.prototype.join.call(arguments); bir dizi yerine bir dize döndürdüğünden ve String bir sıralama yöntemine sahip değildir.

hata Array.prototype.join bir dize döndürür çünkü atıldı

var args = Array.apply(null, arguments); 
+0

Bu aynı zamanda aynı hatayı atmak olacaktır. argümanlar bir dizi değildir. Onu [... argümanlar] .sort (karşılaştırınNumbers) gibi önermek; –

+0

@RajaprabhuAravindasamy haklısınız, sadece onaylanmış https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/arguments – gurvinder372

İlgili konular