2016-08-27 9 views
0

это назначение в свободном кодовом лагере, моя проблема в том, что цикл for for не итерируется, это функция, возвращаемая из метода фильтра, мне нужно прокрутить дополнительные параметры, кроме исходного массива [0], чтобы сравнить, если это соответствует и удалить.мой цикл петли не выполняется?

Результат этого кода - 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

Вы возвращаетесь из своей петли после ровно одной итерации. Может быть, вы имели в виду:

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; 
Смежные вопросы