Tell us what’s happening:
This code will take any number of arrays as parameters into the sym function. In my testing, I am sending in 2 arrays. So, I load each array into the args variable. Then, I pass each args array along with an array which will contain the results of the called function to the function called theDifference. This all seems to work correctly except for one issue: for some reason, the resultArray ends up containing a comma. Very strange. Here is the output that is written to the console:
start theDifference <— This is the start of theDifference the first time it’s called
array1 = 1,2,3
resultArray =
test the value of element = 1
test the value of element = 2
test the value of element = 3
end the Difference
at the end of the function, resultsArray = 1,2,3 <- this looks good so far
start theDifference <— This is the start of theDifference the second time it’s called
array1 = 5,2,1,4
resultArray = 1,2,3, <---- notice the comma at the end of this array? where does this come from?
test the value of element = 5
test the value of element = 2
test the value of element = 1
test the value of element = 4
end the Difference
at the end of the function, resultsArray = 1,2,3,5,4 <---- notice the two commas between 3 and 5?
the results = 1,2,3,5,4, <---- notice the comma after the 4? Where does this come from?
So, for some reason, even though the returned array does not show a comma at the end of the console.log at the end of theDifference function, a comma is inserted for some reason.
Any assistance is greatly appreciated.
Jonathan
Your code so far
function theDifference(array1, resultArray){
console.log("start theDifference");
console.log("array1 = " + array1);
console.log("resultArray = " + resultArray);
array1.forEach(function(element) {
console.log("test the value of element = "+element);
if (resultArray.indexOf(element)<0 && resultArray.indexOf(element<0)){
resultArray.push(element);
}
});
console.log("end the Difference");
console.log("at the end of the function, resultsArray = " + resultArray);
return resultArray;
}
function sym() {
var args = [];
var theResults = [];
var loop;
var l;
for (loop=0;loop<arguments.length;loop++){
args[loop] = arguments[loop];
}
for (l=0;l<args.length;l++){
theResults.push(theDifference(args[l],theResults));
}
console.log("the results = " + theResults);
console.log("------------------");
return theResults;
}
sym([1, 2, 3], [5, 2, 1, 4]);
Your browser information:
Your Browser User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36
.
Link to the challenge:
https://www.freecodecamp.org/challenges/symmetric-difference