gpt4 book ai didi

javascript - 从表达式中提取变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:01 24 4
gpt4 key购买 nike

我有以下问题,但没有任何线索:

对于字符串中的表达式:"func1( A+ func2(A)+ func3(B)+ C + 4 )" 需要一种方法来识别所有变量,在这种情况下是 A , B , C. 表达式可以不同,因此不应将其硬编码为这种模式。例如:它可以只是 func1(A)+func2(B),变量是 A 和 B。

一点背景知识:仍然以"func1( A+ func2(A)+ func3(B)+ C + 4 )" 为例,假设我还有A的其他表达式: “A=sum(a)”“B=sum(b)”“C=sum(c)”,我想做一个合并,使第一个表达式变为:"func1( sum(a)+ func2(sum(a))+ func3(sum(b))+ sum(c)+4)",以便实现这一点,我想我需要一种方法来识别第一个表达式中的所有变量,这就是问题的来源。

编辑:刚刚意识到这有点类似于 js 缩小过程...只是向这个问题添加了 uglifyjs 标签

非常感谢任何答案或线索!

已解决:这已通过与 AST 配合使用的 exprima.js 解决。请检查接受的答案和通讯

最佳答案

这应该可以帮助您完成大部分工作。我发现您可能遇到的一个问题是函数在 JavaScript 中也是变量,因此您必须挑选出所有不是被调用者的变量(标识符)。

$(function() {
$('#out').text(
JSON.stringify(
esprima.parse("func1( A+ func2(A)+ func3(B)+ C + 4 )"),
null, 2
)
);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/jquery/esprima/2.7.1/esprima.js"></script>
<pre id='out'>

</pre>

关于javascript - 从表达式中提取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com