JavaScript 如何获取两个数组之间的差异

JavaScript 如何获取两个数组之间的差异

问题是在JavaScript中找到两个数组之间的差异。目标是识别存在于一个数组中而不在另一个数组中的元素,并将它们作为一个新的数组返回。

要在JavaScript中获取两个数组之间的差异,可以使用各种方法,一些常见的方法包括:

  • 使用filter()和includes()方法
  • 使用for循环和indexOf()方法
  • 使用Set和filter()方法
  • 使用reduce()和includes()方法

方法1:使用filter()和includes()方法

在这个方法中,我们对第一个数组使用filter()方法,然后使用includes()方法检查每个项是否不存在于第二个数组中。结果数组包含存在于第一个数组但不在第二个数组中的元素。

语法:

array1.filter((element) => !array2.includes(element));  
JavaScript

示例: 在这个示例中,我们使用了上面解释的方法。

Javascript

const array1 = [1, 2, 3, 4, 5]; 
const array2 = [3, 4, 5, 6, 7]; 
  
const difference = 
    array1.filter((element) => !array2.includes(element)); 
  
console.log(difference);
JavaScript

输出结果:

[1, 2]  
JavaScript

方法2:使用for循环和indexOf()方法

在JavaScript中查找两个数组的差异,可以使用for循环迭代一个数组,并使用indexOf()方法检查每个元素是否存在于另一个数组中。如果未找到元素,则将其添加到结果数组中。

语法:

function arrayDiff(a, b) {  
    let difference = [];  
    for (let i = 0; i < a.length; i++) {  
        if (b.indexOf(a[i]) === -1) {  
            difference.push(a[i]);  
        }  
    }  
    return difference;  
};  
JavaScript

示例: 在这个示例中,我们定义了一个名为arrayDifference的函数,它接受两个数组作为参数。我们初始化一个名为difference的空数组,用于存储在arr1中存在但在arr2中不存在的元素。然后我们使用for循环遍历arr1中的每个元素。对于每个元素,我们使用indexOf()方法来检查它是否存在于arr2中。如果indexOf()返回-1,表示元素在arr2中未找到,我们将其推入difference数组中。

JavaScript

function arrayDifference(arr1, arr2) { 
    const difference = []; 
  
    for (let i = 0; i < arr1.length; i++) { 
        if (arr2.indexOf(arr1[i]) === -1) { 
            difference.push(arr1[i]); 
        } 
    } 
  
    return difference; 
} 
  
const array1 = [1, 2, 3, 4, 5, 0]; 
const array2 = [3, 4, 5, 6, 7, 9]; 
const difference = arrayDifference(array1, array2); 
console.log(difference);
JavaScript

输出: 最后,我们返回差异数组,该数组包含在arr1中但不在arr2中的元素。

[1, 2, 0]  
JavaScript

方法3:使用Set和filter()方法

在这种方法中,通过使用Set构造函数将数组转换为Set。Set数据结构只允许唯一的值。通过过滤掉第一个Set中也存在于第二个Set中的元素,我们可以得到差异。

语法:

const difference = [...set1].filter((element) => !set2.has(element));  
JavaScript

Example: 在这个例子中,我们使用了上面解释的方法。

Javascript

const array1 = [1, 2, 3, 4, 5]; 
const array2 = [3, 4, 5, 6, 7]; 
  
const set1 = new Set(array1); 
const set2 = new Set(array2); 
  
const difference = [...set1].filter( 
    (element) => !set2.has(element)); 
  
console.log(difference);
JavaScript

输出:

[1, 2]  
JavaScript

方法4:使用 reduce() 和 includes() 方法

该方法遍历第一个数组,并使用 includes() 方法检查每个元素是否存在于第二个数组中。它累积在第二个数组中找不到的元素,从而得出两个数组之间的差异。

语法:

const difference = array1.reduce((result, element) => {  
    if (array2.indexOf(element) === -1) {  
        result.push(element);  
    }  
    return result;  
}, []);  
JavaScript

示例: 在这个示例中,我们使用了上面解释的方法。

Javascript

const array1 = [1, 2, 3, 4, 5]; 
const array2 = [3, 4, 5, 6, 7]; 
  
const difference = array1.reduce((result, element) => { 
    if (array2.indexOf(element) === -1) { 
        result.push(element); 
    } 
    return result; 
}, []); 
  
console.log(difference);
JavaScript

输出:

[1, 2]  
JavaScript

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册