-2

I have array of objects (allItems) with different properties (countries, name). Countries is array inside object that I need to filter by searchByCountry parameter which is just a name (string) of country e.g. 'Germany'.

var allItems = [{
  name: 'Item1',
  countries: [
      {label: 'Argentina', TermGuid: 'abc'},
      {label: 'Germany', TermGuid: 'abc'},
      {label: 'Bosnia', TermGuid: 'abc'},
      {label: 'France', TermGuid: 'abc'},
      {label: 'UK', TermGuid: 'abc'}
    ]
  },
  {
   name: 'Item2',
   countries: [
    {label: 'Argentina', TermGuid: 'abc'}
   ]
  },
  {
   name: 'Item3',
   countries: [
    {label: 'Bosnia', TermGuid: 'abc'}
   ]
  },
  {
   name: 'Item4',
   countries: [
    {label: 'All', TermGuid: 'abc'}
   ]
  }
]

    
var searchByCountry = 'Bosnia';

So expected output for 'Bosnia' would be:

var allItems = [{
  name: 'Item1',
  countries: [
      {label: 'Argentina', TermGuid: 'abc'},
      {label: 'Germany', TermGuid: 'abc'},
      {label: 'Bosnia', TermGuid: 'abc'},
      {label: 'France', TermGuid: 'abc'},
      {label: 'UK', TermGuid: 'abc'}
    ]
  },
  {
   name: 'Item3',
   countries: [
    {label: 'Bosnia', TermGuid: 'abc'}
   ]
  }
]
5

1 Answer 1

1

With using array filter and some method, this should do the trick:

var allItems = [{
    name: 'Item1',
    countries: [{
        label: 'Argentina',
        TermGuid: 'abc'
      },
      {
        label: 'Germany',
        TermGuid: 'abc'
      },
      {
        label: 'Bosnia',
        TermGuid: 'abc'
      },
      {
        label: 'France',
        TermGuid: 'abc'
      },
      {
        label: 'UK',
        TermGuid: 'abc'
      }
    ]
  },
  {
    name: 'Item2',
    countries: [{
      label: 'Argentina',
      TermGuid: 'abc'
    }]
  },
  {
    name: 'Item3',
    countries: [{
      label: 'Bosnia',
      TermGuid: 'abc'
    }]
  },
  {
    name: 'Item4',
    countries: [{
      label: 'All',
      TermGuid: 'abc'
    }]
  }
]


var searchByCountry = 'Bosnia';

const filtered = allItems.filter(item => item.countries.some(country => country.label === searchByCountry))

console.log(filtered)

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.