函数来映射对象数组的数组元素

时间:2015-05-10 00:02:28

标签: javascript arrays

我无法从另一个数组中获取映射数组元素的函数。我有三个状态数组和城市名称,另一个zip_codes数组包含[{city:" City 1",zip:" 11111"},{city:" City 2& #34;,zip:" 22222"} ...]。所有数组都在城市名称中没有拼写错误。但是,当我运行映射邮政编码的storeState函数时,将城市存储到一个新的"状态"数组,它只是收集了一些城市。

我的代码是否有任何问题导致它跳过某些城市?顺便说一下,我是JavaScript的新手。

function mapZip(city){
for (i = 0; i < zip_codes.length; ++i)
    if(zip_codes[i].City == city) return zip_codes[i].zip;
}

    var states =[];
function storeState(state,stateLong){
  for(i = 0; i < state.length; ++i){
    states.push({
      state: stateLong, 
      city: state[i], 
      zip: mapZip(state[i])
    })
  }  
}

storeState(CO,"Colorado")
storeState(CA,"California")
storeState(ID,"Idaho")

console.log(states)

1 个答案:

答案 0 :(得分:0)

问题是你没有使用i索引。 你必须使用 var 。否则它是全局变量

   function mapZip(city){
for (var i = 0; i < zip_codes.length; ++i)
    if(zip_codes[i].City == city) return zip_codes[i].zip;
}

    var states =[];
function storeState(state,stateLong){
  for(var i = 0; i < state.length; ++i){
    states.push({
      state: stateLong, 
      city: state[i], 
      zip: mapZip(state[i])
    })
  }  
}

storeState(CO,"Colorado")
storeState(CA,"California")
storeState(ID,"Idaho")

console.log(states)