JavaScript concat 没有按预期工作,需要详细说明吗?

标签 javascript arrays object for-loop concatenation

所以,我有这个包含国家/地区名称作为键的对象,值是包含一些城市的数组。我想把所有城市都放在一个数组中,没有国家。以下是我的处理方式,不明白为什么它不起作用:

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 的文档:

Returns a new array comprised of this array joined with other array(s) and/or value(s).

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

更改为:

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

关于JavaScript concat 没有按预期工作,需要详细说明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079789/

相关文章:

javascript - 字母js延迟

javascript - Django 身份验证和 Ajax - 需要登录的 URL

javascript - 每个图 block 的 jQuery onclick 延迟超时

javascript - 对于条件事件处理程序,这些方法中的哪一个更好?

java - 稍后使用方法添加到字符串数组

jQuery 迭代数组数组以输出值 "parent-child"

arrays - 我的数组中有多少维或获取最后一个

java - 如何在对象中存储 Set/HashSet?

object - Lisp:基本的面向对象计数器

html - 对齐问题与 CSS/HTML 中的 Flash 文件