【问题标题】:Javascript string to multidimensional array of numbersJavascript字符串到多维数字数组
【发布时间】:2019-11-08 09:51:06
【问题描述】:

我一直在阅读半问题和答案,试图找到解决方案,我正在处理地图并获取我必须转换为数组的字符串...... 我得到了一个作为变量给我的字符串,我可以作为字符串访问它:

coords = '[42.46329472141537,21.46498522471254],[42.463191829327116,21.4654574564449],[42.463524249310545,21.465586246917347],[42.463642970305486,21.465092550106277]';

我需要这个变量是一个数组,我尝试了 JSON.parse 它给我一个错误,我尝试映射未定义的 map(Number) 并且我尝试拆分,它使我的数组变形... 结果我需要数组采用这种格式:

var newCoords = Array(Array([42.46329472141537,21.46498522471254]),Array([42.463191829327116,21.4654574564449]),Array([42.463524249310545,21.465586246917347]),Array([42.463642970305486,21.465092550106277]));

每条建议都会有所帮助。

【问题讨论】:

  • 试试:JSON.parse(`[${coords}]`);
  • 是的,它完成了它的工作......它可能是正则表达式吗?
  • 不,它只是字符串连接,与JSON.parse("[" + coords + "]"); 相同,只是将字符串包装在方括号中以获得有效的 JSON。
  • 我不知道,非常感谢,我这两天一直在寻找解决方案...

标签: javascript arrays json multidimensional-array


【解决方案1】:

要使其可解析,您必须将数组包装在可解析对象(对象属性、另一个数组等)中;

要将您的字符串包装在另一个对象中,您可以利用template literals

模板文字是允许嵌入表达式的字符串文字。 您可以使用多行字符串和字符串插值功能 他们。在之前的版本中,它们被称为“模板字符串” ES2015 规范。

// Wrap arrays in another array to get a parsable object

const coords = '[42.46329472141537,21.46498522471254],[42.463191829327116,21.4654574564449],[42.463524249310545,21.465586246917347],[42.463642970305486,21.465092550106277]';

console.log(JSON.parse(`[${coords}]`));

【讨论】:

  • 我已经在 commens 上得到了答案,但你只是改变了它在字符串开头没有双括号的问题[[ 它在字符串上一个接一个地有数组长...
  • 刚刚编辑,我认为它是微不足道的,但如果你不习惯 javascript 看看我的编辑。
【解决方案2】:

你可以使用split函数来创建一个数组:

let coords = '[42.46329472141537,21.46498522471254],[42.463191829327116,21.4654574564449],[42.463524249310545,21.465586246917347],[42.463642970305486,21.465092550106277]';
let array = coords.split('],[')
              .map( c=> c.replace(/\[/g, '').replace(/]/g, '').split(','));
console.log(array);

【讨论】:

  • 好主意,拆分后使用替换...谢谢您的回答^^。
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2014-07-16
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
相关资源
最近更新 更多