2016-04-14 1 views
1

Эти полные инструкции для того, что я пытаюсь сделать:Удаление повторен значения из массива с несколькими аргументами

Вам будет предоставлен с исходного массива (первый аргумент в функции эсминца), а затем один или больше аргументов. Удалите все элементы из исходного массива, которые имеют такое же значение, что и эти аргументы.

Это решение у меня есть:

function destroyer(arr) {  
    var args = Array.prototype.slice.call(arguments); 
    args.slice(0,1); 
    return arr.filter(function(elements) { 
    return args.indexOf(element) === -1; 
    }); 
} 

Имейте в виду, что может быть любое количество аргументов (а не только 2 или 3).
Решение, которое у меня есть, не работает. Что не так с моим текущим решением и как я могу исправить его с объяснением?

+0

Интервью с работником? :) –

+0

Можете ли вы дать образцы входов и выходов? – gurvinder372

+0

@DmitriPavlutin не собеседование. Просто онлайн-тренинг для личных интересов. – victoria

ответ

1

Ваше решение почти работает. Проблем:

  • args.slice(0,1); не изменяет массив (в любом случае этот метод просто возвращает массив с первым элементом). Используйте args.shift() вместо этого, чтобы удалить первый элемент
  • function(elements) должен быть function(element) в обратном вызове фильтра.

Рабочий раствор:

function destroyer(arr) {  
    var args = Array.prototype.slice.call(arguments); 
    args.shift(); 
    return arr.filter(function(element) { 
    return args.indexOf(element) === -1; 
    }); 
} 

console.log(destroyer([1, 2, 3, 5, 5], 1, 5)); // prints [2, 3] 

Проверить рабочее demo.

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