gpt4 book ai didi

javascript - Array.indexOf 还是之间?

转载 作者:行者123 更新时间:2023-12-02 19:26:39 25 4
gpt4 key购买 nike

我目前正在设计一个 GUI,允许用户定义一些逻辑。我不希望它变得太复杂,所以我将其限制为一组括号。因此,我们的想法是检查左括号和右括号之间是否没有任何其他左括号。

例如。 IF ( a + b OR **(** b+ c) 将发出错误警报。

所以我决定采用以下路线:

  • 找到第一个左括号
  • 找到第一个右括号
  • 使用这些索引在之间搜索并查找任何左括号
  • 如果发现任何左括号,则显示错误
  • 继续循环任何其他逻辑

这是代码。我认为这非常可怕,而且我确信一定有更好的方法来做到这一点。也许是某种 IndexOf。

<select rel="OpenBracket" id="open1">
<option value=""></option>
<option value="(">(</option>
</select>
Some True/Fale here
<select rel="CloseBracket" id="close1">
<option value=""></option>
<option value=")">)</option>
</select>
AND
<br />
<select rel="OpenBracket" id="open2">
<option value=""></option>
<option value="(">(</option>
</select>
Some True/Fale here
<select rel="CloseBracket" id="close2">
<option value=""></option>
<option value=")">)</option>
</select>
<button onclick="javascript:TestingRules();">Check</button>
<小时/>
function GetOpenBrackets() {
var openBracketArray = [];
jQuery('[rel="OpenBracket"]').each(function() {
if (jQuery(this).val() == "(") {
openBracketArray.push(jQuery(this).attr('id'));
} else {
openBracketArray.push(jQuery(this).val());
}

});
return openBracketArray;
}

function GetCloseBrackets() {
var closeBracketArray = [];
jQuery('[rel="CloseBracket"]').each(function() {
if (jQuery(this).val() == "(") {
closeBracketArray.push(jQuery(this).attr('id'));
} else {
closeBracketArray.push(jQuery(this).val());
}
});
return closeBracketArray;
}
function TestingRules() {
var openBrackets = GetOpenBrackets();
var closeBrackets = GetCloseBrackets();
var closeBracketIndex;
var openBracketIndex;
for (openBracketIndex in openBrackets) {
if (openBrackets[openBracketIndex] !== "") {

var foundCloseBracketIndex = -1;
for (closeBracketIndex in closeBrackets) {
if (openBracketIndex <= closeBracketIndex) {
if (closeBrackets[closeBracketIndex] !== "") {
foundCloseBracketIndex = closeBracketIndex;
break;
}
}
}
if (foundCloseBracketIndex > -1) {
var openBracketCheck;
for (openBracketCheck in openBrackets) {

if (openBracketIndex < openBracketCheck && closeBracketIndex >= openBracketCheck) {
if (openBrackets[openBracketCheck] !== "") {
alert('error');
}
}

}
}
}

}

// for testing:
// console.log(OpenBracketArray.length);
}

最佳答案

为什么不只保留一个计数器,或者计算括号堆栈深度?如果 inc 表示左括号,dec 表示右括号,并且计数器超过 1,则出现错误。 (如果我正确理解了您的要求。)

关于javascript - Array.indexOf 还是之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973111/

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