将空间分隔的坐标字符串转换为JavaScript对象数组。

问题描述 投票:0回答:1

这个用空格分隔的字符串:

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个回答
4
投票

你可以使用split来获取每一行,然后将每一行用逗号映射成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);

1
投票

在使用split函数的同时使用map函数

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);

0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.