Reputation: 2256
I have the following json data and want to extract unique vendor fields into an array. How do I accomplish this in angular2 component.
Here is my data:
[{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Klaussner"},
{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Craftmaster"},
{"category": "Living Room", "vendor": "Craftmaster"}]
and I want the resulting array to show:
[{"vendor": "Flexsteel"},
{"vendor": "Klaussner"},
{"vendor": "Craftmaster"}]
Upvotes: 0
Views: 631
Reputation: 34691
First you need to get the vendors, you can get it like this:
let data = [{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Klaussner"},
{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Craftmaster"}];
// Get all the vendors
let vendors = data.map(dat => ({ vendor: dat.vendor }));
After that you'll need to filter the vendors and get only unique vendors using:
// Unique Vendors
let uniqueVendors= Array.from(new Set(vendors.map((x) => JSON.stringify(x))))
.map((y) => JSON.parse(y.toString()));
Full code snippet:
let data = [{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Klaussner"},
{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Craftmaster"}];
// Get all the vendors
let vendors = data.map(dat => ({ vendor: dat.vendor }));
let uniqueVendors= Array.from(new Set(vendors.map((x) => JSON.stringify(x))))
.map((y) => JSON.parse(y.toString()));
console.log(uniqueVendors)
Upvotes: 2
Reputation: 3728
Try this:
const data = [...your data...];
const vendors = data.map(d => {
return { vendor: d.vendor };
});
Upvotes: 2
Reputation: 13356
You can just use Array.map:
let data = [
{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Klaussner"},
{"category": "Living Room", "vendor": "Flexsteel"},
{"category": "Living Room", "vendor": "Craftmaster"}
];
let processedData = data.map(dat => ({ vendor: dat.vendor }));
Upvotes: 2