indexOf()

indexOf() 方法返回给定元素可以在数组中找到的第一个索引,如果不存在,它将返回 -1:

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [5, 6, 7, 8];
let difference = arr1.filter(x => arr2.indexOf(x) === -1);
console.log(difference);
在 JavaScript 中如何比较两个数组

有多种 JavaScript 和 jQuery 方法可以了解两个数组之间的差异。

我们可以使用 JavaScript Array 的 filter 方法使用一行代码,它将输出 arr1 中那些在 arr2 中找不到的元素。

它可以通过三种方式完成。

set对象

set object 方法可以检索两个指定数组之间的差异。

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [5, 6, 7, 8];
let b = new Set(arr2);
let difference = [...arr1].filter(x => !b.has(x));
console.log(difference);

contains()

contains() 方法确定数组是否包含指定的元素:

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [5, 6, 7, 8];
let difference = arr1.filter(x => !arr2.includes(x));
console.log(difference);

jQuery 方法

我们还可以使用 jQuery 通过 grep() 方法查找数组之间的差异:

const { JSDOM } = require("jsdom");
const { window } = new JSDOM();
let $= require("jquery")(window);
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [5, 6, 7, 8];
let difference = $.grep(arr1, (item) => $.inArray(item, arr2) === -1);
console.log(difference);

jQuery 的另一种方法——not() 也可以处理比较:

const { JSDOM } = require("jsdom");
const { window } = new JSDOM();
let $= require("jquery")(window);
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [5, 6, 7, 8];
let difference = $(arr1).not(arr2).get();
console.log(difference);

过滤filter方法

filter() 方法使用通过提供的函数实现的测试的所有元素初始化一个新数组。
此方法为数组中的每个元素调用一次提供的回调函数,并构造一个新数组,其中包含回调返回值为 true 的所有值。
未通过回调测试的数组元素将被遗漏,不会包含在新数组中。

日期:2020-06-02 22:16:20 来源:oir作者:oir