【问题标题】:Reactjs create multiple object array declarationReactjs 创建多对象数组声明
【发布时间】:2018-04-18 04:01:18
【问题描述】:

下面是我尝试从 react-google-maps 获取多边形坐标时的编码:

const coords = { lat:{}, lng:{} }

 getCoordinates: () => (polygon) => {
  const paths = polygon.getPath()
  const coor = paths.b

  {coor.map(function(coor, i){
    coords.lat= coor.lat()
    coords.lng= coor.lng()
  })}
  return console.log(coords)
}

我正在尝试获取“坐标”的对象数组,如下所示:

coords = [
  { lat: 3.1323583333745533, lng: 101.62676453590393 },
  { lat: 3.1318226928949433, lng: 101.62672162055969 },
  { lat: 3.131753059612469, lng: 101.6274243593216 }
]

但是使用代码会给我这个:

coords = { 
  lat: 3.131753059612469, 
  lng: 101.6274243593216 
}

这是三个坐标中的最后一个。

如何获取“坐标”下的所有三个坐标?

【问题讨论】:

    标签: javascript html arrays reactjs object


    【解决方案1】:

    您必须推送到数组而不是对象,希望对您有所帮助!

    let coords = [];
    
    getCoordinates: () => (polygon) => {
        const paths = polygon.getPath();
        const coor  = paths.b;
    
        coor.forEach((c) => {
            coords.push({
                lat: c.lat(),
                lng: c.lng()
            });
        });
    
        return console.log(coords);
    }
    

    【讨论】:

    • 不要将mappush 一起使用。如果您想明确地将push 指向一个数组,请改用普通的for (let c of coor) 循环
    • 对不起使用了错误的方法,我只是修改代码没有检查使用的功能,而是将代码更新为forEach
    • 谢谢,更好,虽然我仍然不喜欢 forEach + push 组合,因为可以使用 map :-P
    • 知道了,我最近过度使用forEach所以想不到使用map,以后会尝试使用更多mapfilter等=)
    • 我建议从不使用forEach。对于副作用(即当您不需要结果值时),请使用for … of。这也允许在循环体中使用 yieldawaitreturnbreakcontinue 之类的东西。
    【解决方案2】:

    这段代码真的很混乱。你似乎在寻找

    function getCoordinates(polygon) {
      const paths = polygon.getPath()
      const coords = paths.b.map(coor => ({
        lat: coor.lat(),
        lng: coor.lng()
      }));
      return coords;
    }
    
    console.log(getCoordinates(…));
    

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2022-08-20
      • 2014-12-12
      • 2013-03-22
      • 2019-05-26
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多