Javascript 用查找表中的字符串替换值

Javascript 用查找表中的字符串替换值,javascript,Javascript,我试图执行如下代码: value = value.replace(/{{(.*)}}/g, this.dataService.relationTable["\"$1\""]); 我想捕获字符串中的变量,该字符串周围有{{and}}。然后我想使用该值搜索名为this.dataService.relationTable的对象,并找到与regex捕获值相等的键字符串 有人知道我做错了什么吗 示例关系表: {C5: 200000, C7: 0, C6: 0, C8: "Site-Built", C26

我试图执行如下代码:

value = value.replace(/{{(.*)}}/g, this.dataService.relationTable["\"$1\""]);
我想捕获字符串中的变量,该字符串周围有{{and}}。然后我想使用该值搜索名为this.dataService.relationTable的对象,并找到与regex捕获值相等的键字符串

有人知道我做错了什么吗

示例关系表:

{C5: 200000, C7: 0, C6: 0, C8: "Site-Built", C26: 25, …}
C5
:
200000
C6
:
0
C7
:
0
C8
:
"Site-Built"
C11
:
4.25
C12
:
360
C13
:
3
C14
:
1000
C15
:
0
C16
:
0
C17
:
5000
C20
:
80
C21
:
8
C22
:
1000
C23
:
8
C24
:
0
C25
:
0
C26
:
25
C29
:
2000
C30
:
275
C31
:
250
C32
:
875
F4
:
"{{C5}}"
F5
:
"{{C7}}"
F6
:
"{{I21}}"
F7
:
"{{F24}}"
F8
:
"{{C29}}"
F9
:
"{{F4}} + {{F5}} + {{F6}} + {{F7}} + {{F8}}"
F11
:
"{{F9}}"
F12
:
"{{C6}}"
F13
:
"{{F11}} + {{F12}}"
F15
:
"{{C5}}"
F16
:
"{{C7}}"
F17
:
"{{C6}}"
F18
:
"{{F15}} + {{F16}} + {{F17}}"
F20
:
"{{F27}}"
F21
:
"{{C30}}"
F22
:
"{{C31}}"
F23
:
"{{C32}}"
F24
:
"{{F20}} + {{F21}} + {{F22}} + {{F23}}"
F26
:
"{{I11}}"
F27
:
"{{F26}} * 9 / 400"
I4
:
"{{F18}}"
I5
:
"{{F24}}"
I6
:
"{{C29}}"
I7
:
"{{C17}}"
I8
:
"{{I35}}"
I9
:
"{{I26}}"
I10
:
"{{C14}} * -1"
I11
:
"{{I4}} + {{I5}} + {{I6}} + {{I7}} + {{I8}} + {{I9}} - {{I10}}"
I13
:
"{{I11}}"
I14
:
"{{C11}}"
I15
:
"{{C12}}"
I16
:
undefined
I18
:
"{{I35}}"
I19
:
"{{C15}}"
I20
:
"{{C17}}"
I21
:
"{{I18}} + {{I19}} + {{I20}}"
I23
:
"{{F13}}"
I24
:
"{{C14}} * -1"
I25
:
"{{C13}}"
I26
:
"({{I23}} + {{I24}}) * {{I25}}"
I28
:
"{{C20}} * {{C21}}"
I29
:
"{{C22}} * {{C23}}"
I30
:
"{{C24}} * {{C25}}"
I31
:
"{{C16}} * -1"
I32
:
"{{C11}} * {{C26}} / 365"
I33
:
"{{C20}} * 12"
I34
:
"{{C24}} * 12"
I35
:
"{{I28}} + {{I29}} + {{I30}} + {{I31}} + {{I32}} + {{I33}} + {{I34}}"
样本值:

{{I35}}

在这种情况下,结果应该是{{I28}+{I29}+{I30}+{I31}+{I32}+{I33}+{I34}

使用函数作为替换:

value = value.replace(/{{(.*)}}/g, (match, p1) => this.dataService.relationTable[p1]);

这里,值
p1
将采用正则表达式中第一个捕获组
(…)
内匹配的值。

我认为这是一个X/Y问题。您可能只需要:var key=“I35”,value=relationTable[key]

[代码>var关系表:{C5:20万,C6:0,C7:0,C8:“现场建造”,C11:4.25,C12:360,C13:3,C14:3,C14:3,C14:3:3,C14:3,C14:3,C13:3,C13:3,C14:3:3,C14:3:3,C13:3:3,C14:3:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C14:3,C1},F9:“{{{F4}}}{{{{{{}}{{{{{{{{F4}}}}{{{{{{{{{{}}}}{{{{{{{{}}}}}}{{{{{{{{{}}}{{{{{}}}{{{{}}}}{{{{{}}}}}{{{{{{{{{}}}}}}}},F11},F11,“学校”,”,”F11,“F11::“{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},}}鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟鸟网,学校,学校,学校,学校,学校,学校,学校,学校,学校,学校,学校,F27},F21:{C30},F22:{C31},F23:{C32},F24:{F20}+{F21}+{F22}+{F23},F26:{I11},F27:{F26}*9/400”I4:“{{{F18}}”,I5:“{{{{{F18}}”,I4:“{{{{{{F18}}”,I4:“{{{{{{{{{{{{F18}}”,I4:“{{{{{{F18}}},I4}},I5},I5},I5,I5:“{{{{{{{{{{{{{{{C29}}}}}}}}},I4},I4},I4},I4},I4},I4}},I4},I4},I7,I4},I4},I7,I4},I4},I7,I7,I7,I7,I7,I4上周上周上周,I7,、I7,I7,I7,I7,,、I7,,、I7,,、I7:{{{11},I14:{C11},I15:{C12},I16:null,I18:{I35},I19:{C15},I20:{C17},I21:{I18}+{I19}+{I20},I23:{{{{{F13}}},I24“{{{{{{{{{{{{{{{{{F13}}}”,I24“{{{{{{{{{{{{{{{}}”,I24”,I24,“I24:“{{{{{{{C14}}}}}}-1”,I24“{{{{{{{C13}}}}}}-1-1-1-1,I25},I25},I24”,I24““{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{3}}}}}},,,,,,{{{{{{{{3}}}}}}3}},,,,,{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}6}/365“,I33:{C20}*12”,I34:{C24}*12”,I35:{{I28}+{I29}+{I30}+{I31}+{I32}+{I33}+{I34} var key=“I35”,value=关系表[key]; console.log(值); //或 key=“{I35}”,value=relationTable[key.replace(/[\{\}]/g,”);
console.log(value);表示$1未定义value可以是任何字符串只是添加了这两个表的示例,该表应该是JSON?字符串?它是从Google chrome控制台复制的…它是一个JS对象,您必须使用第二个参数(第一个捕获组),而不是匹配本身。您正在回答一个X/Y问题。他需要在对象中搜索一个值或一组值