frontendeveloper
1/31/2018 - 8:26 PM

Delete object duplicate in array

Delete object duplicate in array

function removeDuplicates(originalArray, prop) {
    var newArray = [];
    var lookupObject  = {};

    for(var i in originalArray) {
       lookupObject[originalArray[i][prop]] = originalArray[i];
    }

    for(i in lookupObject) {
        newArray.push(lookupObject[i]);
    }
     return newArray;
}





var myArray = [
  {id: 1, name: 'Foo Bar', email: 'foo@bar.com'},
  {id: 2, name: 'Bar Foo', email: 'bar@foo.com'},
  {id: 3, name: 'Joe Ocean', email: 'joe@ocean.com'},
  {id: 3, name: 'Jenny Block', email: 'foo@bar.com'},
];

function checkDuplicateInObject(propertyName, inputArray) {
  var seenDuplicate = false,
      testObject = {};
  
  inputArray.map(function(item) {
    var itemPropertyName = item[propertyName]; 
    if (itemPropertyName in testObject) {
      testObject[itemPropertyName].duplicate = true;
      item.duplicate = true;
      seenDuplicate = true;
    }
    else {
      testObject[itemPropertyName] = item;
      delete item.duplicate;
    }
  });
  
  return seenDuplicate;
}

console.log('Duplicate IDs: ' + checkDuplicateInObject('id', myArray));
console.log('Duplicate names: ' + checkDuplicateInObject('name', myArray));
console.log('Duplicate emails: ' + checkDuplicateInObject('email', myArray));