Diff Two Arrays
Compare two arrays and return a new array with any items only found in one of the two given arrays, but not both. In other words, return the symmetric difference of the two arrays.
Note: You can return the array with its elements in any order
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5])
should return an array.
["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
should return ["pink wool"]
.
["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
should return an array with one item.
["andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
should return ["diorite", "pink wool"]
.
["andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
should return an array with two items.
["andesite", "grass", "dirt", "dead shrub"], ["andesite", "grass", "dirt", "dead shrub"]
should return []
.
["andesite", "grass", "dirt", "dead shrub"], ["andesite", "grass", "dirt", "dead shrub"]
should return an empty array.
[1, 2, 3, 5], [1, 2, 3, 4, 5]
should return [4]
.
[1, 2, 3, 5], [1, 2, 3, 4, 5]
should return an array with one item.
[1, "calf", 3, "piglet"], [1, "calf", 3, 4]
should return ["piglet", 4]
.
[1, "calf", 3, "piglet"], [1, "calf", 3, 4]
should return an array with two items.
[], ["snuffleupagus", "cookie monster", "elmo"]
should return ["snuffleupagus", "cookie monster", "elmo"]
.
[], ["snuffleupagus", "cookie monster", "elmo"]
should return an array with three items.
[1, "calf", 3, "piglet"], [7, "filly"]
should return [1, "calf", 3, "piglet", 7, "filly"]
.
[1, "calf", 3, "piglet"], [7, "filly"]
should return an array with six items.
声明式
function diffArray(arr1, arr2) {
return arr1.concat(arr2).filter(x =>
!(arr1.some(y => x === y) && arr2.some(y => x === y)))
}
console.log(
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5])
)
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]);
答案
https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-diff-two-arrays/16008
拒绝命令式
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]);
https://devdocs.io/javascript/global_objects/array/includes