6.4 KiB
6.4 KiB
title
title |
---|
Diff Two Arrays |
Remember to use
Read-Search-Ask
if you get stuck. Try to pair program and write your own code
Problem Explanation:
Check two arrays and return a new array that contains only the items that are not in either of the original arrays.
Relevant Links
- for Loop (Devdocs)
- Array.prototype.includes (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.concat (Devdocs)
Hint: 1
Merge the list to make it easy to compare functions.
try to solve the problem now
Hint: 2
Use filter to get the new array, you will need to create a callback function.
try to solve the problem now
Hint: 3
The best way to go about the callback function is to check if the number from the new merged array is not in both original arrays and return it.
try to solve the problem now
Spoiler Alert!
Solution ahead!
Basic Code Solution (Imperative Solution):
function diffArray(arr1, arr2) {
var newArr = [];
function onlyInFirst(first, second) {
// Looping through an array to find elements that don't exist in another array
for (var i=0;i<first.length;i++) {
if (second.indexOf(first[i]) === -1) {
// Pushing the elements unique to first to newArr
newArr.push(first[i]);
}
}
}
onlyInFirst(arr1, arr2);
onlyInFirst(arr2, arr1);
return newArr;
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
Code Explanation:
Read the comments in the code.
Relevant Links
Intermediate Code Solution (Declarative Solution):
function diffArray(arr1, arr2) {
return arr1
.concat(arr2)
.filter(
item => !arr1.includes(item) || !arr2.includes(item)
)
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
Code Explanation:
Explain solution here and add any relevant links
Relevant Links
- Array.prototype.concat (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.includes (Devdocs)
Advanced Code Solution (Declarative Solution):
function diffArray(arr1, arr2) {
return arr1
.filter(el => !arr2.includes(el))
.concat(
arr2.filter(el => !arr1.includes(el))
)
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
Code Explanation:
Explain solution here and add any relevant links
Advanced Code Solution Alternative (Declarative Solution):
function diffArray(arr1, arr2) {
return [
...diff(arr1, arr2),
...diff(arr2, arr1)
]
function diff(a, b) {
return a.filter(item => b.indexOf(item) === -1);
}
}
Relevant Links
- Array.prototype.includes (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.concat (Devdocs)