在 Array、Javascript 中查找重复项
Posted
技术标签:
【中文标题】在 Array、Javascript 中查找重复项【英文标题】:Finding duplicates in Array, Javascript 【发布时间】:2021-07-12 15:57:33 【问题描述】:我正在尝试在数组中查找重复项并使用 splice 方法在重复索引处删除它们,代码正在删除重复项但它仍然留下一个重复项。
var removeDuplicates = function(nums)
let length = nums.length;
for(let i=0;i<length;i++)
for(let j=i+1;j<length;j++)
if(nums[i]==nums[j])
console.log(nums);
nums.splice(j,1)
return nums;
;
console.log(removeDuplicates([1,2,2,2,2,2,2]))
【问题讨论】:
尝试使用Set
, [...new Set([1,2,2,2,2,2,2])]
【参考方案1】:
问题是您正在向前循环并同时删除元素,这会弄乱索引。
因此,在这种情况下,您应该向后循环。
var removeDuplicates = function (nums)
let length = nums.length;
for (let i = length - 1; i >= 0; i--)
console.log(`All redundant instances of $nums[i] will be removed`);
for (let j = i - 1; j >= 0; j--)
if (nums[i] == nums[j])
nums.splice(j, 1);
console.log(JSON.stringify(nums));
return nums;
;
const result = removeDuplicates([1, 1, 2, 3, 3, 2]);
console.log("Final Result", JSON.stringify(result));
为了删除重复项,我总是更喜欢使用Set
。
const
arr = [1, 1, 2, 3, 3, 2],
result = [...new Set(arr)]
console.log(JSON.stringify(result))
【讨论】:
@prmdpsn56 请检查这是否解决了您的问题。如果您有任何问题,请告诉我。【参考方案2】:有多种方法可以删除数组重复项。
const names = ['John', 'Paul', 'George', 'Ringo', 'John'];
let unique = [...new Set(names)];
console.log(unique); // 'John', 'Paul', 'George', 'Ringo'
const names = ['John', 'Paul', 'George', 'Ringo', 'John'];
let x = (names) => names.filter((v,i) => names.indexOf(v) === i)
x(names); // 'John', 'Paul', 'George', 'Ringo'
const names = ['John', 'Paul', 'George', 'Ringo', 'John'];
function removeDups(names)
let unique = ;
names.forEach(function(i)
if(!unique[i])
unique[i] = true;
);
return Object.keys(unique);
removeDups(names); // // 'John', 'Paul', 'George', 'Ringo'
https://wsvincent.com/javascript-remove-duplicates-array/
https://medium.com/dailyjs/how-to-remove-array-duplicates-in-es6-5daa8789641c
【讨论】:
以上是关于在 Array、Javascript 中查找重复项的主要内容,如果未能解决你的问题,请参考以下文章