📌  相关文章
📜  数组中的重复数字 javascript (1)

📅  最后修改于: 2023-12-03 14:54:59.875000             🧑  作者: Mango

数组中的重复数字 JavaScript

在 JavaScript 中,我们经常需要处理数组,其中一个常见的问题是如何找出数组中的重复数字。

方法一:使用 Set 对象

Set 对象是 ES6 新增的一个数据结构,可以用来存储一组唯一的值。我们可以利用这个特性来找出数组中的重复数字。

const findDuplicate = arr => {
  const set = new Set();
  const result = [];

  for (let i = 0; i < arr.length; i++) {
    if (set.has(arr[i])) {
      result.push(arr[i]);
    } else {
      set.add(arr[i]);
    }
  }

  return result;
};

const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);

console.log(duplicates); // [1, 2, 5]
方法二:使用对象

除了使用 Set 对象,我们还可以使用普通对象来实现查找数组中的重复数字。

const findDuplicate = arr => {
  const counts = {};
  const result = [];

  for (let i = 0; i < arr.length; i++) {
    if (counts[arr[i]]) {
      result.push(arr[i]);
    } else {
      counts[arr[i]] = 1;
    }
  }

  return result;
};

const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);

console.log(duplicates); // [1, 2, 5]
方法三:使用 reduce 函数

我们还可以使用 reduce 函数来实现查找数组中的重复数字。reduce 函数用于将数组中的每个元素按照指定的方法累加到一个结果中。

const findDuplicate = arr => {
  const counts = arr.reduce((acc, val) => {
    acc[val] = (acc[val] || 0) + 1;
    return acc;
  }, {});

  return Object.entries(counts)
    .filter(([key, value]) => value > 1)
    .map(([key, value]) => parseInt(key));
};

const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);

console.log(duplicates); // [1, 2, 5]
总结

以上是三种常见的方法来查找数组中的重复数字。使用 Set 对象和对象的方式比较简单,并且执行效率较高。使用 reduce 函数可以更加精简,但需要注意一些细节。根据实际需求选择不同的方法即可。