So, I have this object containing country names as keys and the values are arrays with some cities. I want to get all the cities in one array, without the countries. Here's how I go about it and can't understand why it isn't working:
var cities = {
"United Kingdom": ['london'],
"Spain": ['ibiza', 'malaga'],
"USA": ['hollywood']
}
var allCities = [];
for (c in cities) {
allCities.concat(cities[c]);
}
console.log(allCities); //gives empty array
If I replace allCities.concat(cities[c])
with console.log(cities[c])
I get all the arrays like this:
['london']
['ibiza', 'malaga']
['hollywood']
So that's where my frustration es from. Any idea why this isn't working?
So, I have this object containing country names as keys and the values are arrays with some cities. I want to get all the cities in one array, without the countries. Here's how I go about it and can't understand why it isn't working:
var cities = {
"United Kingdom": ['london'],
"Spain": ['ibiza', 'malaga'],
"USA": ['hollywood']
}
var allCities = [];
for (c in cities) {
allCities.concat(cities[c]);
}
console.log(allCities); //gives empty array
If I replace allCities.concat(cities[c])
with console.log(cities[c])
I get all the arrays like this:
['london']
['ibiza', 'malaga']
['hollywood']
So that's where my frustration es from. Any idea why this isn't working?
Share Improve this question asked Nov 19, 2013 at 18:58 kristiyan.mitevkristiyan.mitev 3253 silver badges8 bronze badges1 Answer
Reset to default 13As per documentation of Array.prototype.concat
:
Returns a new array prised of this array joined with other array(s) and/or value(s).
Which means it does not modify the object it is applied to.
Change to:
allCities = allCities.concat(cities[c]);