--- id: a39963a4c10bc8b4d4f06d7e title: Busca y destruye challengeType: 1 forumTopicId: 16046 dashedName: seek-and-destroy --- # --description-- Se te proporcionará un arreglo inicial como primer argumento de la función `destroyer`, seguido de uno o más argumentos. Elimina todos los elementos del arreglo inicial que tengan el mismo valor que estos argumentos. La function debe aceptar un número indeterminado de argumentos, también conocida como función variádica. Puedes acceder a los argumentos adicionales añadiendo un parámetro restante a la definición de la función o utilizando el objeto `arguments`. # --hints-- `destroyer([1, 2, 3, 1, 2, 3], 2, 3)` debe devolver `[1, 1]`. ```js assert.deepEqual(destroyer([1, 2, 3, 1, 2, 3], 2, 3), [1, 1]); ``` `destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3)` debe devolver `[1, 5, 1]`. ```js assert.deepEqual(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3), [1, 5, 1]); ``` `destroyer([3, 5, 1, 2, 2], 2, 3, 5)` debe devolver `[1]`. ```js assert.deepEqual(destroyer([3, 5, 1, 2, 2], 2, 3, 5), [1]); ``` `destroyer([2, 3, 2, 3], 2, 3)` debe devolver `[]`. ```js assert.deepEqual(destroyer([2, 3, 2, 3], 2, 3), []); ``` `destroyer(["tree", "hamburger", 53], "tree", 53)` debe devolver `["hamburger"]`. ```js assert.deepEqual(destroyer(['tree', 'hamburger', 53], 'tree', 53), [ 'hamburger' ]); ``` `destroyer(["possum", "trollo", 12, "safari", "hotdog", 92, 65, "grandma", "bugati", "trojan", "yacht"], "yacht", "possum", "trollo", "safari", "hotdog", "grandma", "bugati", "trojan")` debe devolver `[12,92,65]`. ```js assert.deepEqual( destroyer( [ 'possum', 'trollo', 12, 'safari', 'hotdog', 92, 65, 'grandma', 'bugati', 'trojan', 'yacht' ], 'yacht', 'possum', 'trollo', 'safari', 'hotdog', 'grandma', 'bugati', 'trojan' ), [12, 92, 65] ); ``` # --seed-- ## --seed-contents-- ```js function destroyer(arr) { return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3); ``` # --solutions-- ```js function destroyer(arr) { var hash = Object.create(null); [].slice.call(arguments, 1).forEach(function(e) { hash[e] = true; }); return arr.filter(function(e) { return !(e in hash);}); } destroyer([1, 2, 3, 1, 2, 3], 2, 3); ```