1

Distinct array of objects as like below; i want to get unique array of objects.

Example Array:

const data = [ { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "29", project: "Javascript" }, { "name": "abc", age: "31", project: "C++" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }]

Expected Output:

const data = [ { "name": "abc", age: "31", project: "Java" },{ "name": "abc", age: "29", project: "Javascript" }, { "name": "abc", age: "31", project: "C++" }]
rahul5140
  • 140
  • 1
  • 15
  • Does this answer your question? [Get all unique values in a JavaScript array (remove duplicates)](https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates) – Jan Pfeifer Jan 25 '23 at 08:27
  • Do you consider `{a:5, b:6}` to be the same as `{b:6, a:5}`? – Andrew Parks Jan 25 '23 at 08:31

3 Answers3

1

This approach enforces a consistent key order, and uses JSON.stringify on each object to test for uniqueness.

const data = [ { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "29", project: "Javascript" }, { "name": "abc", age: "31", project: "C++" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }]

const result = [...new Set(data.map(i=>JSON.stringify(Object.fromEntries(
  Object.entries(i).sort(([a],[b])=>a.localeCompare(b))))
))].map(JSON.parse)

console.log(result)
Andrew Parks
  • 6,358
  • 2
  • 12
  • 27
0

let unique = [...new Set(data.map(i => JSON.stringify(i)))].map(i => JSON.parse(i));
Angels
  • 325
  • 4
  • 15
0

As per your data, project property is containing dynamic values. Hence, You can filtered out the duplicates with in a single line of code by using Array.filter() method.

Live Demo :

const data = [ { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "29", project: "Javascript" }, { "name": "abc", age: "31", project: "C++" }, { "name": "abc", age: "31", project: "Java" }, { "name": "abc", age: "31", project: "Java" }];

const uniq = {};

var arrFiltered = data.filter(obj => !uniq[obj.project] && (uniq[obj.project] = true));

console.log(arrFiltered);
Debug Diva
  • 26,058
  • 13
  • 70
  • 123