7.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title
| title | 
|---|
| Seek and Destroy | 
 Remember to use
 Remember to use Read-Search-Ask if you get stuck. Try to pair program  and write your own code
 and write your own code 
 Problem Explanation:
 Problem Explanation:
This problem is a bit tricky because you have to familiarize yourself with Arguments, as you will have to work with two or more but on the script you only see two. Many people hardcode this program for three arguments. You will remove any number from the first argument that is the same as any other other arguments.
Relevant Links
 Hint: 1
 Hint: 1
You need to work with arguments as if it was a regular array. The best way is to convert it into one.
try to solve the problem now
 Hint: 2
 Hint: 2
You need to filter, this also means you need to create a callback function. You can use various methods like: indexOf(), includes(). If you need another approach, reduce() might also be of use; keep reading those docs!
try to solve the problem now
 Hint: 3
 Hint: 3
To convert arguments into an array use this code var args = Array.prototype.slice.call(arguments);
try to solve the problem now
Spoiler Alert!
Solution ahead!
 Basic Code Solution:
 Basic Code Solution:
function destroyer(arr) {
  var args = Array.prototype.slice.call(arguments);
  for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < args.length; j++) {
      if (arr[i] === args[j]) {
        delete arr[i];
      }
    }
  }
  return arr.filter(Boolean);
}
Code Explanation:
- 
Create an array of argumentsusingArray.prototype.slice.call()and store it in the variableargs. We'll use this to check againstarr.
- 
Start a basic forloop to iterate througharr. Nest anotherforloop inside the first, changing the integer variablejand arr to args. This second loop will iterate throughargs.- 
Within the second loop create an ifstatement, checking strictly===that the current val ofarr[i]is equal toargs[j].
- 
If the value at the current index is equal in both arrays, use deleteto remove it fromarr.
 
- 
- 
Outside of the nested loops: return the modified array using the Booleanobject as a filter for anynull's created by thedeleteoperator.
Relevant Links
- [arguments
- Array.filter()
- delete
- Boolean
 Intermediate Code Solution:
 Intermediate Code Solution:
function destroyer(arr) {
  var args = Array.from(arguments).slice(1);
  return arr.filter(function(val) {
    return !args.includes(val);
  });
}
Code Explanation:
- 
Declare a variable named argsand set it equal to a newArrayobjectfrom()theargumentspassed into the function. On the same or next line, use theslice()method onargsstarting from the second index, 1. This separates the arguments used for filtering into their own array ofargs.
- 
Return the filtered array, using includes()in the callback function to check ifvalis not inargs; returningtrueto keep the value in the original array orfalseto remove it.
Relevant Links
Advanced Code Solution:
const destroyer = (arr, ...args) => arr.filter(i => !args.includes(i));
Code Explanation:
- Code using ES6 syntax to declare function using arrow functions.
- Using spread operator to retrieve the arguments.
- Return the filtered array, using includes().
Relevant Links
 NOTES FOR CONTRIBUTIONS:
 NOTES FOR CONTRIBUTIONS:
 DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution. DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution.
- Add an explanation of your solution.
- Categorize the solution in one of the following categories — Basic, Intermediate and Advanced.  
- Please add your username only if you have added any relevant main contents. ( DO NOT remove any existing usernames) DO NOT remove any existing usernames)
See

Wiki Challenge Solution Templatefor reference.

