首页 > 解决方案 > JavaScript - 需要多维数组?

问题描述

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

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_VALUE#. 之后,我想构建一个简单的 RegExp来检查 PRE_VALUE# 的引号中是否包含某些内容。

上面的部分对我来说几乎是清楚的。我将使用 split-Method - 这是我的问题,我不确定如何告诉 split-Method 它应该在第二个引号而不是第一个引号处拆分字符串。

但是,我真正关心的是,如果拆分值与 RexExp 匹配到变量,我想分配它们。在将它们分配给该变量之前,应该有一个简单的词来解释该字段。例如:

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

如果我理解正确,最好和最快的方法是在这里使用多维数组。由于有许多这样的消息和“PRE_VALUE#”仅通过正则表达式构建完整的输入字符串应该有点慢,对吗?

也许有人可以在这里帮助我。

提前致谢!

标签: javascriptarraysperformance

解决方案


PRE_VALUEx您可以将stringby 空格然后 by拆分,而不是仅使用 Regex 来过滤值,=以获取所有相关信息valuesarray如下所示:

[ [“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”] ]

这应该是代码:

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.10"`;

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


推荐阅读