javascript - 删除数字数组中的所有重复数字

标签 javascript arrays duplicates

<分区>

我收到这道练习题,措辞让我感到困惑,因为我看到它可能想要的 2 个结果。

无论哪种方式,我都希望看到这两种解决方案。

例如,如果我有一个数组:

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

我将此视为想要的最终结果:

let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];

或者:

let finalResult = [1, 9, 10];

两者之间的区别在于,一个只删除任何重复的数字并保留其余数字,而第二个只需要任何不重复的数字。

无论哪种方式,我都想编写两个函数,每个函数执行一个。

这是别人给的我的第二个解决方案。

let elems = {},

arr2 = arr.filter(function (e) {
   if (elems[e] === undefined) {
       elems[e] = true;
    return true;
  }
  return false;
});
console.log(arr2);

我不确定第一个函数(删除所有重复项)。

最佳答案

使用 SetArray.from()

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

console.log(Array.from(new Set(arr)));

交替使用正则表达式

正则表达式解释 here

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

let res = arr
  .join(',')
  .replace(/(\b,\w+\b)(?=.*\1)/ig, '')
  .split(',')
  .map(Number);

console.log(res);

交替使用对象

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

let obj = arr.reduce((acc, val) => Object.assign(acc, {
  [val]: val
}), {});

console.log(Object.values(obj));

关于javascript - 删除数字数组中的所有重复数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55255260/

相关文章:

javascript - jQuery 文件上传 - 获取文件夹名称

javascript - 有没有办法打印一个对象的所有方法?

Javascript/Silverlight 代理双加载延迟

php - 数组中 undefined index ,但它在那里

sql - 删除 R 或 SQL 中最不完整的重复行

MySQL 查询 : remove duplicates from ordered list

javascript - 在 jQuery 中移动链接,添加到字符串会导致 [object Object]

javascript - 为什么我非常非常简单的排序函数返回一个未排序的列表

java - 使用 Arrays.fill 时崩溃

mysql - 查询以从 SQL 中删除重复项