数组作为键和值,但值未定义

时间:2019-01-24 05:42:16

标签: javascript arrays object autocomplete

我不知道代码有什么问题。它工作正常,并且两个数组都有数据。但是我不明白为什么在将数据传递到city字段时,从var _city数组中找到未定义的输出。

我该如何解决?

var city = {
  _country : _city
};

2 个答案:

答案 0 :(得分:0)

这是因为_country已在上面定义:

var _country = ["Afghanistan","Bahrain","Canada","Denmark","Ethiopia","France","Germany","Hong Kong","India","Japan"];

city中的定义更改为其他内容(也许是country):

var city = {
    country: _city,
};

它将起作用。

答案 1 :(得分:0)

我想知道您所读的内容是否使您相信,通过写您所做的事情,您会神奇地拥有一个对象,该对象用一个数组来键值,第二个值...

从本质上讲,当您完成操作时会发生什么

var city = {
  _country : _city
};

创建一个看起来像

的对象
var city = {
  '_country' : ['your', 'array', 'of', 'cities']
};

也就是说,具有一个键'_country'的对象已映射到一系列城市。

这说明了为什么您无法定义... city['any string that isn't exactly " _country"'] == undefined

您可能想做的事

var city = _country.reduce(function(acc, cur, idx) { acc[cur] = _city[idx]; return acc; }, {});