2016-06-23 5 views
-1

スクリプトの目的:配列と複数の引数が関数に渡されます。引数と同じ要素を除いた配列を返す必要があります。filter()とArgumentsオブジェクトを使用します。論理エラー?

シンタックスエラーはありません。私のロジックには問題がないようです。

function destroyer(arr) { 

function isTheDestroyer(x) { 

    //Using the arguments object 
    for (i=1; i<arguments.length; i++) { 
     if (x == arguments[i]) { 
     return false; 
     } 
    } 
    return true; 
} 

var filtered = arguments[0].filter(isTheDestroyer); 
return filtered; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 

出力は実行時に変更されません。

+3

'' arguments 'が 'isTheDestroyer'内にあるかどうかをデバッグしましたか?私はそれがあなたの考えではないと強く疑う。 –

+0

@James Thorpeああ、私はどのように 'isTheDestroyer'の '議論'にアクセスするのですか? – AlmostNihilist

答えて

0

私は@James Thorpeに同意します。 isTheDestroyerの引数は、destroyerの引数と同じではありません(実際には同じ順序ではありません)。私は閉鎖を使用することをお勧めします

function destroyer(arr) { 

var args = arguments; 
function isTheDestroyer(x) { 

    //Using the arguments object 
    for (i=1; i<args .length; i++) { 
    if (x == args [i]) { 
     return false; 
    } 
    } 
    return true; 
} 

var filtered = arguments[0].filter(isTheDestroyer); 
return filtered; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
+0

完璧に作業しました!私はすべての関数が独自の '引数'オブジェクトを持つことに気がつきました。 – AlmostNihilist

関連する問題