JavaScript concat not working as expected, care to elaborate?

孤街醉人 提交于 2019-12-02 13:59:44

问题


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 comes from. Any idea why this isn't working?


回答1:


As per documentation of Array.prototype.concat:

Returns a new array comprised 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]);


来源:https://stackoverflow.com/questions/20079789/javascript-concat-not-working-as-expected-care-to-elaborate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!