Javascript 如何将元组字符串提取到数据结构中?
我是新来的。我试图在javascript中将以下元组更改为多维数组。元组字符串:str: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(
“(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()
的主要原因。