JavaScript - 数组操作(交集、并集、补集、差集)

目录

引言

1. 数组交集(Intersection)

2. 数组并集(Union)

3. 数组差集(Difference)

4. 数组补集(Complement)

5. 性能考虑:

示例代码整合


引言

  • 简要介绍数组在 JavaScript 中的重要性及其应用场景。
  • 说明数组操作(交集、并集、补集、差集)在数据处理、算法和集合运算中的重要性。
1. 数组交集(Intersection)
  • 定义

    • 数组的交集是指两个数组中共有的元素。
  • 实现方法

    • 使用 filter 和 includes 方法。
    • 使用 Set 进行高效查找。
  • 示例代码

function intersection(arr1, arr2) {
  return arr1.filter(value => arr2.includes(value));
}

const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
console.log(intersection(array1, array2)); // 输出: [3, 4]
  • 通过 Set 实现:
function intersectionSet(arr1, arr2) {
  const set2 = new Set(arr2);
  return arr1.filter(value => set2.has(value));
}

console.log(intersectionSet(array1, array2)); // 输出: [3, 4]
2. 数组并集(Union)
  • 定义

    • 数组的并集是指两个数组中所有不同元素的集合。
  • 实现方法

    • 使用扩展运算符(...)、concat 方法和 Set 去重。
  • 示例代码

function union(arr1, arr2) {
  return [...new Set([...arr1, ...arr2])];
}

console.log(union(array1, array2)); // 输出: [1, 2, 3, 4, 5, 6]
3. 数组差集(Difference)
  • 定义

    • 数组的差集是指在第一个数组中有但在第二个数组中没有的元素。
  • 实现方法

    • 使用 filter 和 includes 方法。
    • 使用 Set 进行高效查找。
  • 示例代码

function difference(arr1, arr2) {
  return arr1.filter(value => !arr2.includes(value));
}

console.log(difference(array1, array2)); // 输出: [1, 2]
  • 通过 Set 实现:
function differenceSet(arr1, arr2) {
  const set2 = new Set(arr2);
  return arr1.filter(value => !set2.has(value));
}

console.log(differenceSet(array1, array2)); // 输出: [1, 2]
4. 数组补集(Complement)
  • 定义

    • 数组的补集是指在全集中有但在指定数组中没有的元素。其中,全集是指两个数组的并集。
  • 实现方法

    • 首先求并集,然后从并集中移除指定数组中的元素。
  • 示例代码

function complement(arr1, arr2) {
  const unionSet = union(arr1, arr2);
  const intersectionSet = intersection(arr1, arr2);
  return unionSet.filter(value => !intersectionSet.includes(value));
}

console.log(complement(array1, array2)); // 输出: [1, 2, 5, 6]
5. 性能考虑

  • 在大数据集上,使用 Set 或 Map 进行查找可以显著提高性能。
  • 避免不必要的循环和查找操作,以优化性能。

示例代码整合

为了方便读者理解,这里提供一个完整的示例代码,其中包含所有上述操作的实现:

// 交集
function intersection(arr1, arr2) {
  return arr1.filter(value => arr2.includes(value));
}

// 并集
function union(arr1, arr2) {
  return [...new Set([...arr1, ...arr2])];
}

// 差集
function difference(arr1, arr2) {
  return arr1.filter(value => !arr2.includes(value));
}

// 补集
function complement(arr1, arr2) {
  const unionSet = union(arr1, arr2);
  const intersectionSet = intersection(arr1, arr2);
  return unionSet.filter(value => !intersectionSet.includes(value));
}

const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];

console.log('交集:', intersection(array1, array2)); // 输出: [3, 4]
console.log('并集:', union(array1, array2)); // 输出: [1, 2, 3, 4, 5, 6]
console.log('差集:', difference(array1, array2)); // 输出: [1, 2]
console.log('补集:', complement(array1, array2)); // 输出: [1, 2, 5, 6]
js数组并集交集差集是指根据给定的两个或多个数组进行计算得出的不同结果。 数组并集是指将两个或多个数组合并在一起,去除重复的元素,得到一个包含所有数组元素的新数组。 例如,有两个数组arr1 = [1, 2, 3]和arr2 = [2, 3, 4],则它们的并集为[1, 2, 3, 4]。 在JavaScript中,可以使用concat()方法和Set对象实现数组并集。具体实现代码如下: ```javascript var arr1 = [1, 2, 3]; var arr2 = [2, 3, 4]; var union = Array.from(new Set(arr1.concat(arr2))); console.log(union); // [1, 2, 3, 4] ``` 数组交集是指找出两个或多个数组中共同包含的元素,得到一个新数组。 例如,有两个数组arr1 = [1, 2, 3]和arr2 = [2, 3, 4],则它们的交集为[2, 3]。 在JavaScript中,可以使用filter()方法和includes()方法实现数组交集。具体实现代码如下: ```javascript var arr1 = [1, 2, 3]; var arr2 = [2, 3, 4]; var intersection = arr1.filter(num => arr2.includes(num)); console.log(intersection); // [2, 3] ``` 数组差集是指找出一个数组相对于另一个数组的不同元素,得到一个新数组。 例如,有两个数组arr1 = [1, 2, 3]和arr2 = [2, 3, 4],则arr1相对于arr2的差集为[1]。 在JavaScript中,可以使用filter()方法和includes()方法实现数组差集。具体实现代码如下: ```javascript var arr1 = [1, 2, 3]; var arr2 = [2, 3, 4]; var difference = arr1.filter(num => !arr2.includes(num)); console.log(difference); // [1] ``` 这就是JavaScript数组并集交集差集的简单实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值