Reputation: 1734
I have two arrays in my demo application. Array one has countries with content another one is list countries. So, i want to remove countries from array one, if that country not contained in country array. I have put my array values below,
var continent = [
{
"continent":"Europe",
"country":["Albania", "Andorra", "UK", "Ireland"]
},
{
"continent":"Asia",
"country":["Armenia", "Cambodia", "China", "Cyprus"]
}
]
var selectedCountries = ["Albania", "Andorra", "Armenia"];
The output
var result = [
{
"continent":"Europe",
"country":["Albania", "Andorra"]
},
{
"continent":"Asia",
"country":["Armenia"]
}
]
Upvotes: 0
Views: 54
Reputation: 2672
If you are looking at modifying original array, you can do this:
forEach and `filter` would do the job.
continent
array. country
array, keep the ones that are present in the selectedCountries
collection.var continent = [
{
"continent":"Europe",
"country":["Albania", "Andorra", "UK", "Ireland"]
},
{
"continent":"Asia",
"country":["Armenia", "Cambodia", "China", "Cyprus"]
}
];
var selectedCountries = ["Albania", "Andorra", "Armenia"];
continent.forEach(function (c,i) {
c.country = c.country.filter(function (v,i) {
return selectedCountries.includes(v);
});
});
console.log(continent);
Upvotes: 0
Reputation: 138557
output=continent.map(continent=>{
return {
country:continent.country.filter(country=>selectedCountries.find(c=>c===country)),
continent:continent.continent
};
});
Simply filter the countrys by the selectCountries array...
http://jsbin.com/lagonukuni/edit?console
Upvotes: 1