2016-04-04 9 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); 

答えて

2

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

を交換しArray.prototype.joinは、文字列を返すため、エラーが簡単にスローされました。配列のようなオブジェクトを配列に変換するには、代わりにArray.prototype.slice.callを使用する必要があります。

Function.prototype.apply

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

またはで

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

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

または交換Array.from

var args = Array.from(arguments); 

きれいな解決策は、これも同じエラーがスローされますES6 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);は配列ではなく文字列を返し、Stringにはソート方法がないためです。

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

です。 argumentsは配列ではありません。彼に '[... arguments] .sort(compareNumbers)のように提案してください。 ' –

+0

@RajaprabhuAravindasamyあなたは正しいです、ただ確認しましたhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/arguments – gurvinder372

関連する問題