javascript - 编写一个通用实用程序,可以从 javascript 中的任何数组中删除重复项

标签 javascript jquery arrays

我正在编写一个通用实用程序,它将从 JavaScript 数组中删除重复项。我有以下代码,其中所需的内容实际上有效。然后我想把它变成一个实用程序。第一个代码块有效,第二个代码块是实用程序,第三个代码块是我尝试应用该实用程序的方式(不起作用 - 数组中的重复项仍然出现)。任何见解将不胜感激。

//Code without utility - works//
var productArr = [];
for (var p in theData) {
  var theProduct = theData[p];
  var theProductSelect = productArr.filter(function(value, index, self) {
    return self.indexOf(value) === index;
  });
  productArr.push(theProduct.name);
}

//Here's the utility I am trying to write
publicMethods.deDuplicate = function(array, key, type) {
  var providedArray = [];
  var uniqueArray = providedArray.filter(function(value, index, self) {
    return self.indexOf(value) === index;
    return providedArray;
  });
};

//Code with Utility - duplicates still appear
var productArr = [];
for (var p in theData) {
  var theProduct = theData[p];
  productArr.push(theProduct.name);
  publicMethods.deDuplicate(productArr)
}

最佳答案

两种选择:

let arr = [1, 2, 3, 4, 1, 2, 3];

const getUnique = (arr) => {
    return Array.from(new Set(arr));
}

const getUniqueAlt = (arr) => {
    return arr.reduce((acc, cur) => {
    if(acc.indexOf(cur) == -1) {
        acc.push(cur);
    }

    return acc;
  }, [])
}

console.log(getUnique(arr))
console.log(getUniqueAlt(arr));

https://jsfiddle.net/z1w775y1/

不适用于对象数组

关于javascript - 编写一个通用实用程序,可以从 javascript 中的任何数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304368/

相关文章:

javascript - 正则表达式在javascript中查找连续数字

javascript - 在nodejs中将字符串转换为日期时间时moment js中的意外行为

javascript - 如何在选择文件按钮上显示完整的文件名

javascript - 如何使用 Javascript Replace() 替换文本中的单词(如果它们属于数组)

javascript - 获取选择器中数组的最后 2 个元素 (Redux)

arrays - 来自 find 命令长度的 bash 数组

javascript - 如何在 Java 中使用 Selenium 访问弹出元素

jquery - 使用 jQuery 更改字体系列

jquery - 从函数调用的函数中完全退出jquery函数

javascript - 如何运行 onload 函数,然后从 onclick 事件再次调用它