JavaScript concat不能按预期的方式工作,关心详细说明? [英] JavaScript concat not working as expected, care to elaborate?

查看:160
本文介绍了JavaScript concat不能按预期的方式工作,关心详细说明?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有这个对象包含国家名称作为关键,值是一些城市的阵列。我想把所有的城市都排成一列,没有国家。这是我如何去做,不明白为什么它不工作:

pre c $ c $ var city = {
英国:['london'],
西班牙:['ibiza','malaga'],
USA:['hollywood']
}

var allCities = [];
(城市c){
allCities.concat(城市[c]);
}
console.log(allCities); //给出空数组

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

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

这就是我的挫折感来自何处。任何想法,为什么这是行不通的?

解决方案

根据 Array.prototype.concat


返回由此数组与其他数组
和/或值(s)组成的新数组。 $ b

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



更改为:

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


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?

解决方案

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]);

这篇关于JavaScript concat不能按预期的方式工作,关心详细说明?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆