【问题标题】:Convert space separated string of coordinates into JavaScript object array将空格分隔的坐标字符串转换为 JavaScript 对象数组
【发布时间】:2020-06-02 10:41:36
【问题描述】:

这个空格分隔的字符串:

const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604"

..应该转换为由对象组成的数组:

const polygon = [
    { lat: 42.44492, lng: 75.637764 },
    { lat: 42.445503, lng: 75.64534 },
    { lat: 42.433681, lng: 75.6604 }
]

用 JavaScript 实现这一目标的最简单(漂亮)的方法是什么?有一个很好的衬里吗?初始字符串可以包含任意数量的坐标对。

【问题讨论】:

    标签: javascript reactjs geolocation location


    【解决方案1】:

    您可以使用 split 获取每一行,然后将每一行映射为以逗号分隔:

    const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";
    const formated = polygon.split(' ').map((item) => {
      const [ lat, lng ] = item.split(',');
      return { lat, lng };
    });
    console.log(formated);

    如果你想解析你应该使用 let 的值:

    const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";
    const formated = polygon.split(' ').map((item) => {
      let [ lat, lng ] = item.split(',');
      lat = parseFloat(lat); // or any other transformation you wish to make
      lng = parseFloat(lng);
      return { lat, lng };
    });
    console.log(formated);

    【讨论】:

    • 太棒了!知道如何将对象值存储为双精度值而不是字符串吗?我尝试使用 parseFloat 但出现错误。
    • 其实我在错误的地方做了 parseFloat。我不确定在上面的示例中应该在哪里使用它。
    • 我将我之前的评论添加到答案的底部。
    【解决方案2】:

    使用map函数和split函数

    const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";
    
    const res = polygon.split(' ').map(s => {
      const [lat, lng] = s.split(',');
      return { lat: Number(lat), lng: Number(lng) };
    });
    
    console.log(res);

    【讨论】:

      【解决方案3】:

      const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604"
      const polygonsArr = polygon.split(' ')
      const result = []
      polygonsArr.map(item => {
          let a = item.split(',');
          result.push({"lat": a[0], "lng": a[1]})
      })
      console.log(result)

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 1970-01-01
        • 2018-02-16
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        • 2021-01-22
        • 1970-01-01
        相关资源
        最近更新 更多