2019-06-13
描述
返回两个数组中不相同的元素,重复的值不需要进行过滤。
提示
- 对每一个数组创建一个
Set
- 使用
Array.prototype.filter()
来获取数组之间不包含的值 - 使用展开运算符来避免对原始数组的修改,从而生成新的对象结果
代码
const symmetricDifference = (a, b) => {
const sA = new Set(a),
sB = new Set(b);
return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))];
};
示例
获取两个数组中互相没有的元素:
symmetricDifference([1, 2, 3], [1, 2, 4]); // [3, 4]
symmetricDifference([1, 2, 2], [1, 3, 1]); // [2, 2, 3]