How to get unique values in an array

后端 未结 20 2373
情歌与酒
情歌与酒 2020-11-22 14:02

How can I get a list of unique values in an array? Do I always have to use a second array or is there something similar to java\'s hashmap in JavaScript?

I am going

20条回答
  •  时光说笑
    2020-11-22 14:56

    Here is an approach with customizable equals function which can be used for primitives as well as for custom objects:

    Array.prototype.pushUnique = function(element, equalsPredicate = (l, r) => l == r) {
        let res = !this.find(item => equalsPredicate(item, element))
        if(res){
            this.push(element)
        }
        return res
    }
    

    usage:

    //with custom equals for objects
    myArrayWithObjects.pushUnique(myObject, (left, right) => left.id == right.id)
    
    //with default equals for primitives
    myArrayWithPrimitives.pushUnique(somePrimitive)
    

提交回复
热议问题