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

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 ]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程