微信小程序判断数组重复项 微信小程序判断数组重复项怎么弄

小编 07-04 28

在微信小程序开发过程中,我们经常需要对数组进行操作,其中判断数组中的重复项是一项常见的需求,以下是一些常见的方法来判断和处理数组中的重复项。

微信小程序判断数组重复项 微信小程序判断数组重复项怎么弄

1. 使用 Set 对象

Set 是 ES6 中引入的一种新的数据结构,它只存储唯一的值,我们可以利用这个特性来快速找出数组中的重复项。

function findDuplicates(arr) {
    let unique = new Set(arr);
    let duplicates = arr.filter(item => !unique.has(item));
    unique = Array.from(unique);
    return [unique, duplicates];
}
let arr = [1, 2, 3, 2, 4, 5, 6, 5];
let [unique, duplicates] = findDuplicates(arr);
console.log('Unique:', unique);
console.log('Duplicates:', duplicates);

2. 使用对象属性作为键

我们可以创建一个对象,将数组中的每个元素作为键,如果该键已存在,则说明是重复项。

function findDuplicates(arr) {
    let obj = {};
    let duplicates = [];
    for (let item of arr) {
        if (obj[item]) {
            duplicates.push(item);
        } else {
            obj[item] = true;
        }
    }
    return duplicates;
}
let arr = [1, 2, 3, 2, 4, 5, 6, 5];
let duplicates = findDuplicates(arr);
console.log('Duplicates:', duplicates);

3. 使用排序和双指针

首先对数组进行排序,然后使用双指针法判断相邻元素是否相同,如果相同则为重复项。

function findDuplicates(arr) {
    arr.sort(); // 先对数组进行排序
    let duplicates = [];
    for (let i = 0; i < arr.length - 1; i++) {
        if (arr[i] === arr[i + 1]) {
            duplicates.push(arr[i]);
        }
    }
    return duplicates;
}
let arr = [1, 2, 3, 2, 4, 5, 6, 5];
let duplicates = findDuplicates(arr);
console.log('Duplicates:', duplicates);

4. 使用递归

递归方法可以用于找出数组中的所有重复项,但效率较低。

function findDuplicates(arr, index = 0) {
    if (index >= arr.length) return [];
    let result = [];
    for (let i = index + 1; i < arr.length; i++) {
        if (arr[index] === arr[i]) {
            result.push(arr[index]);
            return result.concat(findDuplicates(arr, i));
        }
    }
    return result;
}
let arr = [1, 2, 3, 2, 4, 5, 6, 5];
let duplicates = findDuplicates(arr);
console.log('Duplicates:', duplicates);

5. 使用 Map 对象

Map 对象保存键值对,并且能够记住原始插入顺序的迭代。

function findDuplicates(arr) {
    let map = new Map();
    let duplicates = [];
    for (let item of arr) {
        if (map.has(item)) {
            duplicates.push(item);
        } else {
            map.set(item, 1);
        }
    }
    return duplicates;
}
let arr = [1, 2, 3, 2, 4, 5, 6, 5];
let duplicates = findDuplicates(arr);
console.log('Duplicates:', duplicates);
The End
微信