为了账号安全,请及时绑定邮箱和手机立即绑定

ForLoop 只调用函数一次

ForLoop 只调用函数一次

烙印99 2023-03-03 19:35:04
我有一个 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 响应数据如下所示:
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

您在每次迭代中都覆盖了同一个对象,并将该同一个对象推送到您的数组中。你需要一个全新的对象。


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} }

    const gym = {

      location: placesData.results[i].geometry.location,

      name: placesData.results[i].name,

      address: placesData.results[i].vicinity

    }

    placesDataLocations.push({ gym: gym })

  }

}

如果你想使用地图,你还必须使用过滤器循环。


const placesDataLocations = placesData.results

  .filter(function (result) {

    return result.business_status === 'OPERATIONAL';

  }).map( function(result) {

    return { 

      gym: {

        location: result.geometry.location,

        name: result.name,

        address: result.vicinity

      }

    }

  });


查看完整回答
反对 回复 2023-03-03
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号