JavaScript concat没有按预期工作,关心详细说明?

时间:2013-11-19 18:58:43

标签: javascript arrays object for-loop concat

因此,我将此对象包含国家/地区名称作为键,值为包含某些城市的数组。我想把所有城市都放在一个阵列中,没有国家。这是我如何去做,不明白为什么它不起作用:

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

如果我用allCities.concat(cities[c])替换console.log(cities[c]),我会得到所有这样的数组:

['london']
['ibiza', 'malaga']
['hollywood']

这就是我的挫败感来自于此。知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:13)

根据Array.prototype.concat的文档:

  

返回一个由此数组组成的新数组,该数组与其他数组连接   和/或价值。

这意味着它不会修改它所应用的对象。

更改为:

allCities = allCities.concat(cities[c]);