因此,我有一个包含国家/地区名称作为键的对象,值是带有一些城市的数组。我想把所有城市都排成一排,没有国家。这是我的处理方法,无法理解为什么它不起作用:

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']


这就是我沮丧的源头。知道为什么这行不通吗?

最佳答案

根据Array.prototype.concat的文档:


  返回一个包含此数组和其他数组的新数组
  和/或值。


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

改成:

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

10-07 17:09