javascript - 将一串坐标对转换为对象数组

标签 javascript arrays object

我从数据库接收字符串形式的坐标,但我需要将其转换为一个对象数组,以便稍后与 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/

相关文章:

javascript - 用 Angular 解析 html

arrays - SwiftyJSON 将新数据附加到现有 JSON 数组

javascript - 包含在 Javascript 中使用相同函数构造函数创建的所有对象实例的数组

javascript - HTML &lt;textarea&gt; 的最大长度

javascript - 通过sequelize返回父属性

javascript - 加载时文本内容随机化

c++ - 当多次调用动态分配数组的函数时出现 malloc 错误?

javascript - 在javascript中将带有对象的数组的对象序列化为JSON

javascript - 如何最好地比较 JavaScript 中的两个多级对象以找出差异?

javascript - 使用外部javascript的html表单验证