📌  相关文章
📜  如何使用 JavaScript 从两个未排序的数组中打印唯一元素?(1)

📅  最后修改于: 2023-12-03 15:08:19.928000             🧑  作者: Mango

如何使用 JavaScript 从两个未排序的数组中打印唯一元素?

在开发应用程序时,您可能需要在两个未排序的数组中查找唯一元素。这个问题可以使用 JavaScript 解决,下面是一些解决方法。

方法 1:使用 Set 对象

使用 Set 对象可以轻松解决这个问题。 你可以将数组中的元素放入 Set 中,它会自动去除重复项。最后,你可以将 Set 对象转换为数组。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];

const set1 = new Set(arr1);
const set2 = new Set(arr2);

const uniqueArr = [...set1].filter((item) => set2.has(item));
console.log(uniqueArr);

输出:

[3, 4, 5]
方法 2:使用对象

你也可以使用对象来解决这个问题。首先,你需要将数组中的元素放入对象中。 然后,你可以遍历第二个数组,如果数组元素在对象中存在,则将其添加到结果数组中。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];

const obj1 = {};
const resultArr = [];

arr1.forEach((item) => {
  obj1[item] = true;
});

arr2.forEach((item) => {
  if (obj1[item]) {
    resultArr.push(item);
  }
});

console.log(resultArr);

输出:

[3, 4, 5]
方法 3:使用 filter() 和 indexOf()

你还可以使用 filter() 方法和 indexOf() 方法来解决此问题。 首先,遍历一个数组,然后使用 indexOf() 方法查找该元素是否存在于另一个数组中。 如果该元素存在于另一个数组中,把它添加到结果数组中。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];

const uniqueArr = arr1.filter((item) => {
  return arr2.indexOf(item) !== -1;
});

console.log(uniqueArr);

输出:

[3, 4, 5]
总结

使用 Set 对象、对象和 filter() 方法和 indexOf() 方法都可以从两个未排序的数组中打印唯一元素。 当然,每种方法都有其优点和缺点,所以您需要根据您的具体情况选择最好的方法。