我从数据库接收字符串形式的坐标,但我需要将其转换为一个对象数组,以便稍后与 Google map 一起使用。
我已经设法将数组成对拆分和分块,但在将分块转换为键值对时遇到问题。
let coordinatesString = "-80.486470, 43.390095, -80.486854, 43.390228, -80.486796, 43.389998, -80.486292, 43.389968, -80.486282, 43.390030"
// split the string by , in order to get an array
let splitArray = coordinatesString.split(', ')
function chunk(arr, chunkSize) {
var result = [];
for (var i=0,len=arr.length; i<len; i+=chunkSize)
result.push(arr.slice(i,i+chunkSize));
return result;
}
// chunk an array into couples of 2
let chunkedArray = [chunk(splitArray, 2)]
console.log (chunkedArray)
// ["-80.486470", "43.390095"], ["-80.486854", "43.390228"],
// ["-80.486796", "43.389998"], ["-80.486292", "43.389968"],
// ["-80.486282", "43.390030"]
// transform chunked array into an object
var objs = chunkedArray.map(function (arr) {
return arr.reduce(function (res, curr) {
var [key, value] = curr;
res[key] = value;
return res;
}, {});
});
console.log(objs);
// Current output
//[{
// -80.486282: "43.390030",
// -80.486292: "43.389968",
// -80.486470: "43.390095",
// -80.486796: "43.389998",
// -80.486854: "43.390228"
// }]
// Desired output
// [{ "lng": -80.486282, "lat": 43.390030 },
// { "lng": -80.486292, "lat": 43.389968 },
// { "lng": -80.486470, "lat": 43.390095 },
// { "lng": -80.486796, "lat": 43.389998 },
// { "lng": -80.486854, "lat": 43.390228 }]
将分块数组转换为 lng
/lat
对象的最佳方法是什么?
最佳答案
试试下面的函数。
function getCoordinates(str) {
const arr = str.split(', ');
const finalArr = [];
for (var i = 0, n = arr.length; i < n; i+=2) {
finalArr.push({
"lng": parseFloat(arr[i]),
"lat": parseFloat(arr[i+1])
});
}
return finalArr;
}
let coordinatesString = "-80.486470, 43.390095, -80.486854, 43.390228, -80.486796, 43.389998, -80.486292, 43.389968, -80.486282, 43.390030";
console.log(getCoordinates(coordinatesString));
关于javascript - 将一串坐标对转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569366/