Home > database >  How to combine all unique element in any given array property from array of object into single array
How to combine all unique element in any given array property from array of object into single array

Time:02-25

I have below javascript array of object problem in which i have tag array property inside array of object. Tag array contain some value in each array of object. I wanted to get unique tag value from each array of object and combine into single array which will contain only unique tag.

const obj = [{
  name: "ABC",
  tag: ["abc", "xyz"]
}, {
  name: "USA",
  tag: ["abc", "suv"]
}, {
  name: "ABC",
  tag: ["pot", "xyz"]
}]

I need the unique tag item into single array as per below.

const unique = ["abc", "xyz", "suv", "pot"];

CodePudding user response:

You could use flatMap and Set

const obj = [
  { name: 'ABC', tag: ['abc', 'xyz'] },
  { name: 'USA', tag: ['abc', 'suv'] },
  { name: 'ABC', tag: ['pot', 'xyz'] },
]

const res = [...new Set(obj.flatMap(({tag}) => tag))];

console.log(res)

CodePudding user response:

A set will give you unique values:

const obj = [{
  name: "ABC",
  tag: ["abc", "xyz"]
}, {
  name: "USA",
  tag: ["abc", "suv"]
}, {
  name: "ABC",
  tag: ["pot", "xyz"]
}]

const unique = [...new Set(obj.flatMap(({tag}) => tag))];

console.log(unique)

CodePudding user response:

You can use Set to filtered out the unique elements from an array.

Demo :

const obj = [{
  name: "ABC",
  tag: ["abc", "xyz"]
}, {
  name: "USA",
  tag: ["abc", "suv"]
}, {
  name: "ABC",
  tag: ["pot", "xyz"]
}];

let arr = [];

obj.forEach((item) => {
    arr.push(...item.tag)
})

console.log([...new Set(arr)]);

  • Related