koque
koque

Reputation: 2256

Angular 2: Extracting json fields into an array

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

Answers (3)

FAISAL
FAISAL

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

Markus Kollers
Markus Kollers

Reputation: 3728

Try this:

const data = [...your data...];

const vendors = data.map(d => {
  return { vendor: d.vendor };
});

Upvotes: 2

Faly
Faly

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

Related Questions