Javascript 需要一种使用数组设置字符串变量的方法吗
我的问题正是如上所述。下面有一些代码定义了数组中的变量集。已经存在的代码只是去掉了文本框中定义变量的区域,这样就可以得到答案。您可以只定义变量,也可以在定义变量后编写[simp]以获得简化的答案,而不仅仅是交换变量。例如,我希望您能够在文本框中写入1+a[a=1],并在下面的文本中获得1+1Javascript 需要一种使用数组设置字符串变量的方法吗,javascript,Javascript,我的问题正是如上所述。下面有一些代码定义了数组中的变量集。已经存在的代码只是去掉了文本框中定义变量的区域,这样就可以得到答案。您可以只定义变量,也可以在定义变量后编写[simp]以获得简化的答案,而不仅仅是交换变量。例如,我希望您能够在文本框中写入1+a[a=1],并在下面的文本中获得1+1 <!DOCTYPE html> <html> <head> <title>PlayBox</title&
<!DOCTYPE html>
<html>
<head>
<title>PlayBox</title>
<style>
textarea {
resize: none;
width: 100%;
height: 100px;
}
body{
font-family: 'Courier New', Courier, monospace;
background-color: white;
}
</style>
</head>
<body>
<textarea id="input"></textarea>
<button onclick="run()">Run</button>
<p id="output"></p>
<script>
function run() {
var input = document.getElementById('input').value
var simpPositive = input.search('[simp]')
var doctorPositive = input.search('[doctor]')
var defineVarPositive = input.search(/\[\D\=\d/)
if ((simpPositive > -1) & (defineVarPositive < 0)) {
var newInput1 = input.replace('[simp]', '').replace(/(?<=[\d\)])\((?=\d)/g, "*(")
var simp = eval(newInput1)
document.getElementById('output').innerHTML = simp
}
if (doctorPositive > -1) {}
if (defineVarPositive > -1) {
var findMultVar = input.split('[')
var elem = findMultVar[1];
var fixFindMultVar = elem.substring(0, elem.length -1)
var ffmvarr = fixFindMultVar.split(';')//array here
var replaceletter = input.split('[')[0]//need more code here to change the variables using the array
console.log(replaceletter)
if (simpPositive > -1) {
var deleteSimp = replaceletter.replace('[simp]', '')
var newInput2 = deleteSimp.replace(/(?<=[\d\)])\((?=\d)/g, "*(")
var simp = eval(newInput2)
document.getElementById('output').innerHTML = simp
} else {
document.getElementById('output').innerHTML = replaceletter
}
}
if ((simpPositive < 0) & (defineVarPositive < 0) & (doctorPositive < 0)) {
document.getElementById('output').innerHTML = 'error: no modifiers found';
}
}
</script>
</body>
</html>
游戏箱
文本区{
调整大小:无;
宽度:100%;
高度:100px;
}
身体{
字体系列:“Courier New”,Courier,monospace;
背景色:白色;
}
跑
函数运行(){
var input=document.getElementById('input')。值
var simpPositive=input.search(“[simp]”)
var doctorPositive=input.search(“[doctor]”)
var defineVarPositive=input.search(/\[\D\=\D/)
if((simpositive>-1)和(defineVarPositive<0)){
var newInput1=input.replace('[simp]','').replace(/(?-1){}
如果(定义积极性>-1){
var findMultVar=input.split('['))
var elem=findMultVar[1];
var fixFindMultVar=元素子字符串(0,元素长度-1)
var ffmvarr=fixFindMultVar.split(“;”)//此处为数组
var replaceletter=input.split(“[”)[0]//需要更多代码才能使用数组更改变量
console.log(replaceletter)
if(simpositive>-1){
var deleteSimp=replaceletter.replace(“[simp]”,”)
var newInput2=deleteSimp.replace(/(?我可以看到您试图使用split
来解决此问题。虽然理论上可以找到解决方案,但它会非常混乱。只需使用字符串匹配和替换就可以轻松地解决此问题,就像您在代码的其他地方所做的那样
下面是一个简单的解决方案,它将搜索所有变量分配(即[variable=value]
),然后对输入执行全局查找和替换。最后,代码将删除所有变量分配,为您提供所需的结果
它应该适用于任意数量的变量分配,以及任意数量的变量使用(由于全局替换)
注意:我不确定您的全部需求-但目前您的初始代码(以及上面的代码)解释一个单字符变量名和一个单位数值;这很容易适应更一般的用例。我可以看到您试图使用拆分来解决这个问题。虽然理论上可能有一个解决方案,但它会非常混乱。只需使用字符串匹配和替换即可轻松解决此问题nt,正如您已经在代码中的其他地方所做的那样
下面是一个简单的解决方案,它将搜索所有变量分配(即[variable=value]
),然后对输入执行全局查找和替换。最后,代码将删除所有变量分配,为您提供所需的结果
它应该适用于任意数量的变量分配,以及任意数量的变量使用(由于全局替换)
注意:我不确定您的全部要求-但目前您的初始代码(以及上面的代码)包含一个单字符变量名和一个单位数值;这很容易适应更一般的用例
for (const match of input.match(/(\[\D\=\d\])/g)) {
const name = match[1]
const val = match[3];
input = input.replace(new RegExp(name, 'g'), val);
}
input = input.replace(/\[.+?\]/g, '');