1.假设数组中都是简单类型。
2.最好是能给出性能较高/代码简洁的解法(分两个解法写也行)。
3.如果简洁的写法使用第三方库能缩短到更短的话,使用第三方库也是可以的。
[1,3,2] [1,2,3] 完全相等
[1,2,3] [5,3] 部分相等
[1,2,3] [4,5,6] 完全不相等
只需要判定成功其中两种情况即可 剩下的就是另一种情况了。
1.假设数组中都是简单类型。
2.最好是能给出性能较高/代码简洁的解法(分两个解法写也行)。
3.如果简洁的写法使用第三方库能缩短到更短的话,使用第三方库也是可以的。
[1,3,2] [1,2,3] 完全相等
[1,2,3] [5,3] 部分相等
[1,2,3] [4,5,6] 完全不相等
只需要判定成功其中两种情况即可 剩下的就是另一种情况了。
es6,利用Set 计算集合的差集。https://es6.ruanyifeng.com/#d...
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// (a 相对于 b 的)差集
let difference = new Set([...a].filter(x => !b.has(x)));
difference.size === 0 // 完成相同
difference.size >0 && < a.length // 部分相同
difference.size === a.length // 完成不同
提供一种解法,有啥可优化的可以评论提哦。
test = (arr1, arr2) => {
const x = new Set(arr1)
const y = new Set(arr2)
const l = new Set([...x, ...y]).size;
if (x.size === y.size && x.size === l) return '全等';
if (x.size + y.size === l) return '无交集';
return '不全等但有交集';
};
可以参考:R.equals([1, 2, 3], [1, 2, 3]); //=> true
https://ramdajs.com/docs/#equals
一般来说,能尽量用库就用,库封装好的,会考虑到一些错误边界情况。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
完全相等
部分相等
完全不相等