最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

arrays - JavaScript concat not working as expected, care to elaborate? - Stack Overflow

programmeradmin1浏览0评论

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 badges
Add a ment  | 

1 Answer 1

Reset to default 13

As 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]);
发布评论

评论列表(0)

  1. 暂无评论