I am wondering how I can return multiple values from an array like this:
var countries = [
{ key: "Spain", doc_count: 1378 },
{ key: "Greece", doc_count: 1259 }
];
This is what I have set up so far and it works fine for returning a single value. I am wondering how I could pass an array of countries though instead of looking for a single country.
var countriesFound = countries.filter(function(country) {
return country.key === 'Spain';
});
On that note I would also like to add the found object to the front of the array so I could have a copy of it inside my countries array.
Using this results in some unexpected results because I end up with an array as my first item in the countries array and my object that I want is stored withint that array.
countries.unshift(countriesFound);
Results in (at least I think it looks like this typed out):
var countries = [
[{ key: "Spain", doc_count: 1378 }],
{ key: "Spain", doc_count: 1378 },
{ key: "Greece", doc_count: 1259 }
];
Change your filter to :
var countriesFound = countries.filter(function(country) {
return ["Spain","Greece"].indexOf(country.key) != -1
});
Where ["Spain","Greece"]
is your list of valid countries that you want to filter by. The value returned form the filter function applied to the array determines whether the element is filtered in or out. indexOf
finds the position in the given array of the give country.key
As per the add the filtered array to the beginning of the other one you are correct, doing countries.unshift(countriesFound)
after the previous code will achieve that.
The same answer as @Juan Corés, but with arrow function expression:
const countriesFound = countries.filter(country =>
["Spain","Greece"].indexOf(country.key) != -1
);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With