Javascript删除所有重复元素,只留下唯一的元素

Javascript删除所有重复元素,只留下唯一的元素,javascript,arrays,Javascript,Arrays,我想删除多次出现的元素并获得唯一的元素。数组始终有3个元素。 假设我有一个数组[2,3,2],那么我需要得到数组中唯一的3(删除两个2,因为它们出现多次) 我已经尝试了以下代码,但肯定不能像预期的那样工作 var firstArrTemp = [2,3,2]; var sorted_arr = firstArrTemp.sort(); var unique_element; for (var i = 0; i < sorted_arr.length - 1; i++) { if (

我想删除多次出现的元素并获得唯一的元素。数组始终有3个元素。 假设我有一个数组[2,3,2],那么我需要得到数组中唯一的3(删除两个2,因为它们出现多次)

我已经尝试了以下代码,但肯定不能像预期的那样工作

var firstArrTemp = [2,3,2];
var sorted_arr = firstArrTemp.sort();
var unique_element;
for (var i = 0; i < sorted_arr.length - 1; i++) {
    if (sorted_arr[i + 1] != sorted_arr[i]) {
        unique_element=sorted_arr[i];
    }
}

alert(unique_element);
var firstArrTemp=[2,3,2];
var sorted_arr=firstArrTemp.sort();
var-唯一元素;
对于(变量i=0;i

谢谢

这应该可以做到:

Array.prototype.getUnique=function(){
var uniques=[];
对于(变量i=0,l=this.length;i
另一种选择:

var a = [2,3,2], result = [];

for(var i = 0; i < a.length; i++){

    if(getAllIndexes(a, a[i]).length === 1)
        result.push(a[i]);
}

console.log(result);

function getAllIndexes(arr, val) {
    var indexes = [], i = -1;
    while (~(i = arr.indexOf(val, i+1)))
        indexes.push(i);
    return indexes;
}
var a=[2,3,2],result=[];
对于(变量i=0;i
使用filter()函数的一种替代方法:

var myArray = [1,2,3,2,2,4,3,7,3].sort();
var uniqueValues = myArray.filter(function(item, i, arr) {
  return (item !== arr[i-1] && item !== arr[i+1]);
});

其中,
uniqueValues
=[1,4,7]

到目前为止,其他答案都具有
O(n log n)
时间复杂度或更差。这可以通过使用集合(
Set.has
has
O(1)
complexity)代替嵌套循环在
O(n)
时间内完成:

/.sort具有复杂性O(n log n):这里不需要它,请避免它
const getonlyniques=(arr)=>{
const foundOnce=新集合();
const foundtweeps=新集合();
arr.forEach((项目)=>{
if(foundOnce.has(项目)){
创建两次。添加(项目);
}
创建一次。添加(项);
});
返回arr.filter(item=>!foundtwitter.has(item));
};

log(getOnlyUniques([2,3,2])在从阵列中删除重复项时,我通常使用一种方法:

const arrWithDuplicates = [1,2,2,2,3,4,4]
const arrWithUniqueValues = [...new Set(arrWithDuplicates)]

// result will be: [1,2,3,4]

这也适用于字符串和布尔值。

@Vohuman,不,这不是重复的,您引用的页面给出2,3作为结果数组,我只想得到3,删除两个2。请仔细阅读问题,然后再标记为duplicate@vohuman:这不是这个问题所需要的。这个问题要求得到一个包含所有唯一元素的结果。@Johan,这不是我想要的,请再读一遍帖子。当数组为[1,2,3]时,应该返回[1,2,3]?这就是确切的答案。谢谢你,伙计!这对于小数组来说很好,但是如果你的数组有大量的元素,这可能会变得非常慢。我完全忘了这里有答案。如果你知道一个更快的解决方案,请回答:-)我不知道这里发生了什么o.o你在数组上迭代了两次吗?@Cerbrus嘿,我没说这是性能最好的解决方案-只是一个替代方案;)虽然很难产生O(N)
是可能的,尽管可以使用集合。(也可以使用对象,但集合更合适)当然,这是可行的。然而,排序一个数组,然后再次对其进行迭代似乎是双重工作。我不确定我创建的性能测试用例是否完全正确(至少我尝试过),但以下是结果:。没有任何证明,但我不认为先排序然后过滤是一个真正的问题(或双重工作)。请更清楚地说明什么是
Set
“Set对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。”-MDN Docs。因此,它允许您在默认情况下存储唯一值。