JavaScript 如何从两个未排序的数组中打印出唯一元素
给定两个未排序的数组,任务是编写一个JavaScript程序,打印出这两个数组中的唯一(不常见)元素。
以下是使用JavaScript从两个未排序的数组打印出唯一元素的方法:
- 使用for循环
- 使用filter()方法
方法1:使用for循环
- 创建一个空数组,用于存储这两个数组中的唯一元素。
- 使用循环遍历数组1的所有元素。
- 为每次迭代设置初始标志值为0。
- 在该循环中,使用另一个循环遍历数组2的所有元素,并检查数组1中的元素是否存在于数组2中。
- 如果存在,则使用splice()方法将该元素从数组2中移除,并将标志设置为1。
- 如果对于数组1的元素array1[element],数组2已经完全遍历并且标志仍然等于0,则将array1[element]添加到唯一元素数组中。
- 对于数组1中的每个元素,重复步骤4-6。
- 最后,将数组2推送到唯一元素数组中,因为数组2中的所有重复元素都已被移除(参考步骤5)。
示例: 下面是上述方法的实现。
function unique(arr1, arr2, uniqueArr) {
for (let i = 0; i < arr1.length; i++) {
let flag = 0;
for (let j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
arr2.splice(j, 1);
j--;
flag = 1;
}
}
if (flag == 0) {
uniqueArr.push(arr1[i]);
}
}
uniqueArr.push(arr2);
return uniqueArr;
}
let arr1 = [54, 71, 58, 95, 20];
let arr2 = [71, 51, 54, 33, 80];
let uniqueArr = [];
console.log("Unique elements in the two arrays are: "
+ unique(arr1, arr2, uniqueArr).flat());
输出
Unique elements in the two arrays are: 58,95,20,51,33,80
方法2:使用filter()方法
通过使用filter()方法,我们可以过滤出所有唯一的元素。然后我们将过滤后的数组与一个新数组连接。
示例:
let arr1 = [54, 71, 58, 95, 20];
let arr2 = [71, 51, 54, 33, 80];
let unique1 = arr1.filter((o) =>
arr2.indexOf(o) === -1);
let unique2 = arr2.filter((o) =>
arr1.indexOf(o) === -1);
const unique = unique1.concat(unique2);
console.log(unique);
输出
[ 58, 95, 20, 51, 33, 80 ]