📅  最后修改于: 2023-12-03 15:08:19.928000             🧑  作者: Mango
在开发应用程序时,您可能需要在两个未排序的数组中查找唯一元素。这个问题可以使用 JavaScript 解决,下面是一些解决方法。
使用 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]
你也可以使用对象来解决这个问题。首先,你需要将数组中的元素放入对象中。 然后,你可以遍历第二个数组,如果数组元素在对象中存在,则将其添加到结果数组中。
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]
你还可以使用 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() 方法都可以从两个未排序的数组中打印唯一元素。 当然,每种方法都有其优点和缺点,所以您需要根据您的具体情况选择最好的方法。