@mvr1976
Учу html, css, js

Как передать параметру функции произвольное количество аргументов?

Добрый день!
Есть функция, в первом параметре массив, во втором строка. Если значение строки есть в массиве, оно удаляется из массива. Но если строк во втором параметре больше чем 1, функция обрабатывает только последнее значение.

Пробовал обернуть фильтр в циклfor (i=0; i<arguments.length; i++) но это не помогло.
Подскажите пожалуйста как сделать, чтобы функция обрабатывала все переданные второму параметру аргументы.
function destroyer(arr, args) {
var x = arr.filter(function(values){
return values !== args;
});	
return x;
}	
var z = destroyer(["tree", "hamburger", 53], "tree", 53);
console.log(z)
  • Вопрос задан
  • 394 просмотра
Пригласить эксперта
Ответы на вопрос 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Дублируете вопрос? Ая-яй. Я же вам уже там ответил.
Ответ написан
vawsan
@vawsan
Frontend Developer
ТСу видимо пока сложновато читать ваш код, хоть он и оч хорош)

ТС, вы, судя по описанию путаете 2 понятия:
  1. массив строк
  2. массив входных аргументов в функции на js


Для лучшего понимания даю вам логически более понятный вариант, но не оптимальный. Т.к. Виталий Инчин предоставил гораздо более оптимальный и короткий код.
function destroyer(arr){
    if(arguments.length > 1)
    {
        for(var i=1;len = arguments.length, i<len;i++)
        {
            for(var j=0;arrLen = arr.length, j<arrLen;j++)
            {
                if(arr[j] === arguments[i])
                delete arr[j];
            }
        }
        return arr.filter(function(item){
            return item != 'undefined'
        });
    }
}
Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Может такой вариант подойдёт?
Array.prototype.destroyer = function(a) {
    return this.filter(function(v) {return a.indexOf(v) < 0;});
};
var z = ["tree", "hamburger", 53].destroyer(["tree", 53]);
console.log(z); // "hamburger"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы