在 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 中查找重复项的主要内容,如果未能解决你的问题,请参考以下文章

javascript 从带有Set的Array中删除重复项

使用 Array.includes() 和测试重复项的 JavaScript 问题

Javascript从多个数组中查找所有重复项

查找和替换数组中的重复项

怎么去掉javascript 的Array的重复项

关于如何去除数组中重复项