Javascript - 字符串到坐标数组

Javascript - String to Coordinates Array

本文关键字:坐标 数组 字符串 Javascript      更新时间:2023-09-26

我是Javascript的新手,在将字符串转换为坐标值数组时遇到了一些问题。

这是我的字符串(临时 - 字符串可能有更多/更少的坐标):

var str = "12:13.94:13:14.9:";

每个坐标由 ":" 分隔,其中

str[0] = x1;
str[1] = y1;
str[2] = x2;
str[3] = y2;
.................

我希望它返回一个 2D 坐标数组,如下所示:

var cArray = [[12,13.94],[13,14.9].........];

有什么办法可以做到这一点吗?

我试过了:

var cString = coorStr.split(":");

但它只返回一个字符串数组,

这就是我到目前为止所拥有的:https://jsfiddle.net/mLskwxyj/

Tadman的回答提供了一种将字符串解析为数字数组的方法:

var str = '12:13,94:13:14,9';
var num = str.split(':').map(Number);

对于将此数组拆分为[x, y]对的通用方法,此答案提供了一个简洁的解决方案。我在下面稍微修改了一下(以删除 Lodash 依赖项):

var coords = num.reduce(function (r, v, i, a) {
  // on every even element, grab a pair of numbers and 
  // add to the result
  if (i % 2 === 0)
    r.push(a.slice(i, i + 2));
  return r;
}, []);

这是一个工作示例。请注意,具有预分配结果数组的 for 循环将提高性能。我只是想在单个语句中提供一种方法来做到这一点。

这有点笨拙,但可以根据需要排列它们:

var str = "12:13,94:13:14,9:";
var split = str.replace(/,/g, '.').split(':').map(Number);
var result = [
  [ split[0], split[1] ],
  [ split[2], split[3] ],
];
console.log(result);
// [ [ 12, 13.94 ], [ 13, 14.9 ] ]

说明欧洲风格对数字,的使用。

更新:根据建议添加了.map(Number)