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:
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:
- Set
- Array.prototype.flatMap()
- Spread syntax (...)
- Unpacking properties from objects passed as a function parameter
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)]);