+ 1

How to remove duplicates in JavaScript objects?

I have an array of objects, but I want to remove objects in that have the same properties like name, Address and email. I want to base on these three to remove the duplicate objects

30th May 2017, 4:11 AM
Chad Tims
Chad Tims - avatar
3 Antworten
+ 1
That just the bare ideal You can develop that item.email in map depend on your "same": // define how is the same here, ex: same name and email Object.prototype.isSame = function (obj){ return this.email && obj.email && this.email == obj.email && this.name && obj.name && this.name == obj.name } // check had any same item in array Object.prototype.haveSameIn = function (arr){ for(var i= 0; i< arr.length;i++){ if (this.isSame(arr[i])) return true } return false } ar = [{email:'a', name: 'aa'}, {email:'b', name:'bb'}, {email:'a', name: 'aa'} ] map = [] // similar W1 br = ar.filter(function(it){ if (it.isHaveSameIn(map)){ return false }else{ map.push(it) return true } }) // Or use pop push while (ar.length >0){ it = ar.pop() if (!it.haveSameIn(map)){ map.push(it) } } // Both have same result console.log(map)
30th May 2017, 4:26 PM
Nhan Ngo
Nhan Ngo - avatar
0
Way1: var ar = [ {email:'a'},{email:'a'}, {email:'b'} ] var map = {} br = ar.filter(function (item){ if (!(item.email in map) ){ map[item.email] = item return true }else{ return false } }) console.log(br) W2: // reduce to Object to remove duplicate cr = ar.reduce(function(a,b){ a[b.email]=b return a }, {}) // Convert to array cr = Object.keys(cr).map(function(i){ return cr[i] }) console.log(cr)
30th May 2017, 6:26 AM
Nhan Ngo
Nhan Ngo - avatar
0
I see u are only dealing with one object property. I meant something like this [{name:'chad', address:street,tel:'0764645455'},{name:'chad', address:street,tel:'0764645455}]
30th May 2017, 3:04 PM
Chad Tims
Chad Tims - avatar