2016-04-24 4 views
0

Im пытается фильтровать нулевые аргументы функции, используя другие аргументы функции. Функции цикла и фильтра, похоже, работают, но проблема заключается в том, что цикл не проходит весь цикл. Я не совсем уверен, что происходит в этом случае. Вот код:Цитирование через фильтр с аргументами в Javascript

function destroyer(arr) { 

    var args = Array.from(arguments); 
    args.shift(); 

    function destroyer(value) { 
     for (i = 0; i <= args.length; i++) { 
      return value != args[i]; 
     } 
    } 
    return arguments[0].filter(destroyer); 
} 
destroyer([1, 2, 3, 1, 2, 30], 2, 3); 

Выходной сигнал [1, 3, 1, 30].

+1

Какой выход вы ожидаете? '[1,1,30]'? – ayushgp

ответ

0

Попробуйте сделать это:

function destroyer(arr) { 

    var args = Array.from(arguments); 
    args.shift(); 
    function destroyer(value) { 
     for (i = 0; i <= args.length; i++) { 
      if(value == args[i]) 
       return false; //If element is found, don't return 
     } 
     return true; //Element not found in args 
    } 
    return arguments[0].filter(destroyer); 
} 
destroyer([1, 2, 3, 1, 2, 30], 2, 3); 

EDIT: Почему ваш подход работает?

Проблема заключается в этой части:

Проблема заключается в вашем возвращении заявления.

for (i = 0; i <= args.length; i++) { 
     return value != args[i]; 
    } 

Это возвращает логическое значение, как только он видит, сравнивает значение в массиве на первое значение в массиве арга, т.е. он сравнивает только первое значение.

+0

Спасибо, что сработал неплохо. Но какова была проблема с исходным кодом? Я знаю, что функция фильтра требует, чтобы логическое значение проходило, но! = Создает истинный/ложный ответ. – amolinasf

+0

@amolinasf Я добавил объяснение. Кстати, я вижу, что вы новичок в Stack Overflow, Welcome! Пожалуйста, примите и поддержите лучший ответ на свой вопрос! – ayushgp

Смежные вопросы