从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()andlastIndexOf()方法在数组中指向同一索引,则可以确保它仅存在一次,因此我们将在代码中使用此发现。

该功能的完整代码将是-

示例

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 ]