2016-08-27 25 views
0

これはフリーコードキャンプでの割り当てです、私の問題は私のループです反復していない、それはフィルタメソッドから返された関数です、私は最初の配列[0]以外の余分なパラメータをループする必要があります削除します。私のforループは実行されていませんか?

このコードの結果は1,3,1,3で、私は1,1になりたいです。

function destroyer(arr) { 
    var p = arguments.length; // arr length 
    var r = arguments; // 
    function argScope(item) { 
     debugger; 
     for(var a =1; a<=p; a++) { // start iterate at 1, 0 is the initial array I want to remove elements 
      if(item == r[a]) { // this is true at 1 so 2 is removed, but loop doesn't execute 
       return false; 
      } else { 
       return item; 
      } 
     } 
    } 

    var v = arr.filter(function(item,index,array) { 
    debugger; 
    return argScope(item); // call a function for the scope 

    }); 
    return v; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); // function call 

help?

答えて

0

をこれはそれを行う必要があります。

function destroyer(arr) { 
 

 
    function argScope(item) { 
 
    debugger; 
 
    for (var a = 1; a < arr.length; a++) 
 
     if (item == arr[a]) return false; 
 
    return true; 
 
    } 
 

 
    return arr[0].filter(function(item) { 
 
    debugger; 
 
    return argScope(item); // call a function for the scope 
 
    }); 
 
} 
 

 
var myArray = [1, 2, 3, 1, 2, 3]; 
 
var filteredArray = destroyer([myArray, 2, 3]); 
 

 
console.log(filteredArray);

+0

私はこのコードを行っているが、私たちの違いは、中括弧は、この作品を知りませんでしたが、私なぜこれが中括弧で機能しないのか聞いてみたいのですか? – learningjavascriptks

+1

forループの中括弧について話していると思いますか?もちろん、中括弧でも動作しますが、else句で項目を返しました。ループが終わった後、私は本当に戻った。 –

3

正確に1回の反復の後にループから戻ってきます。 はたぶん、あなたは意味:

for(var a =1; a<=p; a++) { // start iterate at 1, 0 is the initial array I want to remove elements 
    if(item == r[a]) { // r and a is not set, value is only set after 
     return item; 
    } 
} 
return false; 
関連する問題