Javascript——如何在一个对象数组中循环获得一个属性

30 阅读1分钟

我想让我的循环中的条件值以条件的返回值为基础:

  {
   "latlng": {
     "lat": 40.736526195302844,
     "lng": -73.76140508510238
   },
   "topography":{ "elevation": 30.600000000000364,
    "slope": 1.6597018254049931,
    "aspect": 162.64597536455346,
    "resolution": 57.85277886769637
   }
  }


function MakeRoute(highestEl, n) {
  let startPointsForClosest = [];

  startPointsForClosest[0] = highestEl;

  for (let i = 0; i < topographyData.length - 1; i++) {
    if (
      startPointsForClosest[i]?.topography.elevation >=
      topographyData[i]?.topography.elevation - n
    ) {
      startPointsForClosest.push(topographyData[i]);
    }
  }

  return startPointsForClosest;
}


MakeRoute({
"latlng": {
    "lat": 40.738800829681864,
    "lng": -73.7568126408477
},

"topography": {
    "elevation": 38.600000000000364,
    "slope": 1.3792065335718062,
    "aspect": 111.03751102530578,
    "resolution": 57.85092357410129
}}, n)

当然,在第一次迭代时,我开始的值是这样的:

   startPointsForClosest[0] = highestEl;

我想要的是每个dataObject在startPointsForClosest 数组中的下一个值的基础上有一个海拔的下降,n

然而,这是我得到的结果

这是我得到的结果:

[    {        "latlng": {            "lat": 40.738800829681864,            "lng": -73.7568126408477        },        "topography": {            "elevation": 38.600000000000364,            "slope": 1.3792065335718062,            "aspect": 111.03751102530578,            "resolution": 57.85092357410129        }    },    {        "latlng": {            "lat": 40.741588319997106,            "lng": -73.76029372856034        },               "topography": {            "elevation": 30.700000000000728,            "slope": 1.9044574779242354,            "aspect": 188.9726266146405,            "resolution": 57.84851723771878        }    }]

不知道为什么这个函数在两个对象上就停止了。但我至少应该得到一个海拔属性为36.600000000000364 的对象?

希望得到任何帮助。