JS数组交集、差集、并集、补集:ES5实现与扩展方法

版权申诉
5星 · 超过95%的资源 2 下载量 166 浏览量 更新于2024-09-11 收藏 92KB PDF 举报
本文档主要介绍了在JavaScript中计算两个数组的交集、差集、并集和补集的两种常见实现方法。首先,作者推荐使用ES5语法,这种方法虽然较为繁琐,但兼容性极佳,无需依赖额外的第三方库。 方法一:利用filter和concat操作 1. 交集:通过`filter`函数检查一个元素是否在另一个数组中存在,如果存在则保留,`indexOf`方法返回值大于-1表示找到。示例代码如下: ```javascript var c = a.filter(function(v){ return b.indexOf(v) > -1 }); ``` 2. 差集:同样使用`filter`,但查找元素不在目标数组中的情况,即`indexOf`返回值为-1: ```javascript var d = a.filter(function(v){ return b.indexOf(v) == -1 }); ``` 3. 补集:首先找出A数组中的元素不在B数组中,然后找出B数组中不在A数组中的元素,使用逻辑非运算符`!`来实现: ```javascript var e = a.filter(function(v){ return !b.indexOf(v) }).concat(b.filter(function(v){ return !a.indexOf(v) })); ``` 4. 并集:将A数组直接与B数组过滤后仅包含B数组中不在A数组中的元素合并: ```javascript var f = a.concat(b.filter(function(v){ return !a.indexOf(v) })); ``` 方法二:扩展Array原型 为了提高代码的可读性和复用性,作者建议扩展Array对象,添加如`each`和`contains`等辅助方法: - `each`函数:遍历数组并执行自定义函数,将结果累加到新数组中: ```javascript Array.prototype.each = function(fn) { // ... }; ``` - `contains`方法:判断数组是否包含指定元素: ```javascript Array.prototype.contains = function(suArr) { // ... }; ``` 通过这两种方法,开发者可以根据项目需求和性能考虑选择合适的计算方式来处理JavaScript数组的交集、差集、并集和补集。这种方式既实用又灵活,适用于大部分JavaScript环境。