Javascript 如何将元组字符串提取到数据结构中?

Javascript 如何将元组字符串提取到数据结构中?,javascript,regex,Javascript,Regex,我是新来的。我试图在javascript中将以下元组更改为多维数组。元组字符串:str:“(4,7,1)、(8,9,6)、(3,5,7)”。 我可以考虑用for循环来做。我正在寻找足够的方法来做到这一点。一种方法是在javascript中使用正则表达式。我不擅长正则表达式。 谁能帮我一下吗?提前谢谢 您可以自己解析它。以下是工作片段中的一种方法: 函数解析元组(t){ var items=t.replace(/^\(|\)$/g,“”).split(“),(”); items.forEach(

我是新来的。我试图在javascript中将以下元组更改为多维数组。元组字符串:str:
“(4,7,1)、(8,9,6)、(3,5,7)”
。 我可以考虑用for循环来做。我正在寻找足够的方法来做到这一点。一种方法是在javascript中使用正则表达式。我不擅长正则表达式。
谁能帮我一下吗?提前谢谢

您可以自己解析它。以下是工作片段中的一种方法:

函数解析元组(t){
var items=t.replace(/^\(|\)$/g,“”).split(“),(”);
items.forEach(函数(val、索引、数组){
数组[索引]=val.split(“,”).map(数字);
});
退货项目;
}
var数据=“(4,7,1)、(8,9,6)、(3,5,7)”;
var result=parseTuple(数据);

document.write(JSON.stringify(result))您可以使用eval。这里,这是您的原型函数
tuple

String.prototype.tuple = function(){
    return eval("[" + this.replace(/\(/g,"[").replace(/\)/g,"]") + "]")
}
这是这个原型函数的示例用法

var s = "(4,7,1),(8,9,6),(3,5,7)";
console.log(s.tuple())
正如您所看到的,它简单快速,您可以使用下面的JSFIDLE进行尝试。 使用
s.tuple()

这是你的电话号码

为什么我要使用eval而不是JSON.parse

如果您确信自己的输入,那么使用
eval()
比使用
JSON.parse()
要好得多

  • 一些浏览器仍然不支持
    JSON.parse()
  • JSON.parse()
  • eval()
    JSON.parse()快得多
String.prototype.tuple=function(){
返回eval(“[”+this.replace(/\(/g,“[”).replace(/\)/g,“]”+“]))
}
var s=“(4,7,1)、(8,9,6)、(3,5,7)”;

document.write(JSON.stringify(s.tuple())
使用
nums.map(Number)
?@TaoP.R.-我补充了这一改进。谢谢回复!我错过了正则表达式。我的职能应该是有效的。所以我不知道使用“地图”会增加执行时间。如果我错了,请帮助我。我试图学习如何在使用内存和执行时间之间保持平衡,从而提高代码的效率。@alps07-那个正则表达式只是为了摆脱前导和后导的参数。@jfriend00-你认为JSON解决方案比map解决方案快吗?哪一个更有效?你使用
eval
而不是
JSON.parse
?JSON.parse也使用eval()。如果出于安全考虑,您确信自己的输入,那么使用eval()比JSON.parse快得多。@AhmetCanGüven-
JSON.parse()
不使用
eval()
。它以更安全的方式解析JSON,不易受到嵌入式代码攻击。这是使用它而不是
eval()
的主要原因。