微信小程序判断数组重复项 微信小程序判断数组重复项怎么弄
在微信小程序开发过程中,我们经常需要对数组进行操作,其中判断数组中的重复项是一项常见的需求,以下是一些常见的方法来判断和处理数组中的重复项。
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
还没有评论,来说两句吧...