ForLoop 只调用函数一次

我有一个 fourLoop 调用我的函数 addMarker,但我只得到一个循环的结果。我嵌套在循环中的控制台日志返回正确的数组长度。我对这个问题很好奇,因为我怀疑我对某些概念缺乏关注。这是针对 Google 地图、地点和地理编码 API 的(为了安全起见,我删除了我的密钥,因此如果您只是通读 initMap 函数,所有相关问题都在该范围内)。


更新:我记录了“loopData”,我得到了正确的迭代次数,但它只是来自最后一个索引的数据。这让我指向了 forLoop 中的错误,我在其中解析了来自 Google 的初始响应地点 API。那里的代码是这个块:(以下代码块的目的是迭代对象数组,并在每次迭代时获取某些值,并将这些值推送到收集对象的新数组“placesDataLocations”。对现在我得到了正确数量的对象,但每个对象都与我的 API 响应数据的最后一个合格对象具有完全相同的值。)


const gym = {}

const placesDataLocations = []


for (let i = 0; i < placesData.results.length; i++) {

  if (placesData.results[i].business_status === 'OPERATIONAL') {

    // Array of Objects in form {gym: {id: 10, quantity: 10} }

    gym.location = placesData.results[i].geometry.location

    gym.name = placesData.results[i].name

    gym.address = placesData.results[i].vicinity

    placesDataLocations.push({ gym: gym })

  }

}

console.log(placesDataLocations)

initMap(googleGeocodeLat, googleGeocodeLng, placesDataLocations)

})


初始 API 响应数据如下所示:

http://img.mukewang.com/6401db8c0001e9c906580684.jpg

烙印99
浏览 90回答 1
1回答

慕容3067478

您在每次迭代中都覆盖了同一个对象,并将该同一个对象推送到您的数组中。你需要一个全新的对象。const placesDataLocations = []for (let i = 0; i < placesData.results.length; i++) {&nbsp; if (placesData.results[i].business_status === 'OPERATIONAL') {&nbsp; &nbsp; // Array of Objects in form {gym: {id: 10, quantity: 10} }&nbsp; &nbsp; const gym = {&nbsp; &nbsp; &nbsp; location: placesData.results[i].geometry.location,&nbsp; &nbsp; &nbsp; name: placesData.results[i].name,&nbsp; &nbsp; &nbsp; address: placesData.results[i].vicinity&nbsp; &nbsp; }&nbsp; &nbsp; placesDataLocations.push({ gym: gym })&nbsp; }}如果你想使用地图,你还必须使用过滤器循环。const placesDataLocations = placesData.results&nbsp; .filter(function (result) {&nbsp; &nbsp; return result.business_status === 'OPERATIONAL';&nbsp; }).map( function(result) {&nbsp; &nbsp; return {&nbsp;&nbsp; &nbsp; &nbsp; gym: {&nbsp; &nbsp; &nbsp; &nbsp; location: result.geometry.location,&nbsp; &nbsp; &nbsp; &nbsp; name: result.name,&nbsp; &nbsp; &nbsp; &nbsp; address: result.vicinity&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript