需要JavaScript多维数组吗?

需要JavaScript多维数组吗?,javascript,arrays,performance,Javascript,Arrays,Performance,我有一个字符串,看起来像这样: PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13” PRE_VALUE3=“”PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6” POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=“” PRE_VALUE10=“10.10.10.10” 我的目标是为每个PRE#值拆分第二个引号后的字符串。之后,我想构建一个简单的RegExp,它检查PRE#u值的引号中是

我有一个字符串,看起来像这样:

PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13” PRE_VALUE3=“”PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6” POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=“” PRE_VALUE10=“10.10.10.10”

我的目标是为每个
PRE#
值拆分第二个引号后的字符串。之后,我想构建一个简单的RegExp,它检查PRE#u值的引号中是否有内容

我几乎清楚上面的部分。我将使用split方法——这里是我的问题,我不确定如何告诉split方法它应该在第二个引号处而不是第一个引号处分割字符串

但是,我真正关心的是,如果拆分后的值与RexExp匹配到变量,我希望将其赋值。在给变量赋值之前,应该有一个简单的词来解释这个字段。 e、 g:

PRE_VALUE2=“String13”将是“String:String13”

如果我理解正确,最好也是最快的方法就是在这里使用多维数组。因为有很多这样的消息,而且“PRE_VALUE#”只通过RegExp为完整的输入字符串构建它应该有点慢,对吗

也许有人能帮我


提前谢谢

您可以在引号内搜索不引用字符

var string='PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13”PRE_VALUE3=”“PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6”POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=”“PRE_VALUE10=“10.10.10”,
成对=字符串
.match(/[^\s=]+=“[^”]*”/g)
.减少((r,s)=>{
var[,k,v]=s.match(/([^\s=]+)=“([^”]*)”/);
r[k]=v;
返回r;
}, {});
控制台日志(对)

。作为控制台包装{max height:100%!important;top:0;}
而不是只使用正则表达式来过滤
PRE\u VALUEx
值,您可以按空格然后按
=
拆分
字符串,以获得
数组中所有相关的
值,如下所示:

[[ “PRE_VALUE1”, “时间戳”][ “PRE_VALUE2”, “第13条”][ “前价值3”, "" ], [ “PRE_VALUE4”, "1" ], [ “PRE_VALUE5”, “AK”][ “PRE_VALUE6”, “键6”][ “POST_VALUE1”, "000" ], [ “价值8”, “KE_Y1”][ “前价值9”, "" ], [ “前价值10”, “10.10.10.10”]]

这就是代码应该是什么样子的:

var arr = string.split("\" ").map(x => {
  x = x.replace(/\"/g, '');
  return x.split("=");
});
演示:

let string=`PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13”PRE_VALUE3=”“PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6”POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=”“PRE_VALUE10=“10.10.10”`;
var arr=string.split(“\”).map(x=>{
x=x。替换(/\“/g,”);
返回x.split(“=”);
});

控制台日志(arr)拆分互不相同的引用是不可能的,但是您可以在引用标记上当然分裂,甚至在生成的数组中考虑索引“n”、变量名和奇数索引“n+1”的变量值。当然有更好的方法来处理正则表达式,但我还是不太擅长这些…嗨,谢谢你的快速响应和帮助。这些解决方案在我看来有点完美-返回字符串时是否有办法更改前缀,例如“PRE_VALUE1”?还要将每个返回值保存在单独的变量中?@qwertzy欢迎使用SO:)如果空格在引号内怎么办?在这种情况下,我们将按
进行拆分,以确保按相关空格进行拆分。是否有方法在返回字符串时更改前缀,例如字符串中的“PRE_VALUE1”?并将每个返回值保存在单独的变量中,以便记录“var1具有值时间戳”和var2的值为String13“@qwertzy在这种情况下,不返回
return x.split(“=”)
使用
return x.split(“=”)[1]
仅获取数组中的值,然后可以迭代数组并打印变量。