在 JavaScript 中完全移除数组中的重复项


我们要编写一个接收数组并返回一个已从中移除所有重复值的数组的新数组的函数。

在原始数组中出现过多次的值,即使只出现过一次,也不应出现在新数组中。

例如,如果输入是 -

const arr = [23,545,43,232,32,43,23,43];

输出应为 -

const output = [545, 232, 32];

理解差别 -

  • Array.prototype.indexOf() → 如果搜索字符串存在,则返回其第一次出现的索引,否则返回 -1。

  • Array.prototype.lastIndexOf() → 如果搜索字符串存在,则返回其最后一次出现的索引,否则返回 -1。

这两种方法都从左到右开始。

这两种方法都从 0 开始,如果第二个参数未定义,当第二个参数为数字时从第二个参数开始。

因此,此处的重要一点是,如果在一个数组中,indexOf() 和 lastIndexOf() 方法指向同一个索引,则我们可以确定它只存在一次,因此我们将在我们的代码中使用此发现。

该函数的完整代码如下 -

示例

const arr = [23,545,43,232,32,43,23,43];
const deleteDuplicate = (arr) => {
   const output = arr.filter((item, index, array) => {
      return array.indexOf(item) === array.lastIndexOf(item);
   })
   return output;
};
console.log(deleteDuplicate(arr));

输出

控制台中的输出如下 -

[ 545, 232, 32 ]

更新于: 19-Aug-2020

257 次浏览

职业起步

完成课程以获得认证

开始
广告