我正在编写一个通用实用程序,它将从 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/