【问题标题】:Change CENTER const for CENTER array to loop/iterate?将 CENTER 数组的 CENTER const 更改为循环/迭代?
【发布时间】:2019-01-07 00:39:10
【问题描述】:

我有一个使用 const CENTER 的辅助函数的工作零食。

我正在尝试将 const CENTER 更改为具有大量坐标的 CENTER 数组,以便辅助函数可以迭代/循环?通过所有的点。

    const { latitude, longitude, speed } = position.coords;
    const center = { latitude: 37.600530, longitude: -122.482629 };  //this is to change
    const { radius, distance } = this.calculateMeasurements(latitude, longitude, center);


    calculateMeasurements = (latitude, longitude, center) => {
    const radius = geolib.isPointInCircle(
      { latitude: latitude, longitude: longitude },
      { latitude: center.latitude, longitude: center.longitude },
      1000
    );
    const distance = geolib.getDistance(
      { latitude: latitude, longitude: longitude },
      { latitude: center.latitude, longitude: center.longitude }
    );
    console.log(radius, distance);
    return { radius, distance };
  }

我想放置一个像这样的 CENTER 数组:它可以工作吗?

    const center = [( id: 1, latitude: 34.3434656, longitude: -56.876456 ),
                    ( id: 2, latitude: 35.3434656, longitude: -57.876456 ),
                    ( id: 3, latitude: 36.3434656, longitude: -58.876456 ),
                    ( id: 4, latitude: 37.3434656, longitude: -59.876456 )];

【问题讨论】:

    标签: arrays react-native object constants


    【解决方案1】:

    它会很好用。 使用map 循环您的数组,如下所示。 并且在使用数组中的对象元素时不要忘记使用大括号。

    const { latitude, longitude, speed } = position.coords;
    const centers = [ // use curly brackets for js objects.
    { id: 1, latitude: 34.3434656, longitude: -56.876456 },
    { id: 2, latitude: 35.3434656, longitude: -57.876456 },
    { id: 3, latitude: 36.3434656, longitude: -58.876456 },
    { id: 4, latitude: 37.3434656, longitude: -59.876456 }];
    
    const { radius, distance } = this.calculateMeasurements(latitude, longitude, center);
    
    const results = centers.map(({id, lati: latitude, longi: longitude) => {
      return this.calculateMeasurements(latitude, longitude, {lati, longi});
    });
    
    console.log(`results[0] : ${results[0].radius}, ${results[0].distance}`);
    
    calculateMeasurements = (latitude, longitude, center) => {
      const radius = geolib.isPointInCircle(
      { latitude: latitude, longitude: longitude },
      { latitude: center.latitude, longitude: center.longitude },
      1000);
      const distance = geolib.getDistance(
        { latitude: latitude, longitude: longitude },
        { latitude: center.latitude, longitude: center.longitude }
      );
      console.log(radius, distance);
      return { radius, distance };
    }

    【讨论】:

    • 谢谢@Jeff!它在 PC 中编译正常,但是当我在移动设备中尝试时出现错误,评估 't.toString',undefined is not an object.. isDecimal 也许它与数组无关。
    • @Caquibf 我认为这不是这段代码引起的问题。您需要通过调试模式检查错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多