Java脚本使用数组来存储条件
java script using array to store conditions
如何将if条件语句添加到数组中(java脚本)
我在数组中存储条件语句时有问题。我可以让代码运行,但我得到意想不到的结果。本节的目的是从用户输入框中查找状态名。然后检查邮政编码输入框,检查邮政编码是否在该州的邮政编码范围内。
**我简化了代码,所以它很容易理解,但仍然会出现同样的错误
由于X的值为1000,它不应该在两个数组索引值上都作为真值传递,但由于某种原因它确实传递了。这可能是非常简单的修复,但我真的很困惑,为什么它不工作。对不起,这是我第一次学习javascript,所以我不是专家。
function x()
{
var x = 1000;
var conditionArray = [
(2000 <= x < 3000),
(6000 <= x < 7000)
];
var i =0;
while (conditionArray.length > i)
{
// x for some reason is always passed as true
if (conditionArray[i])
{
alert("within range");
}
else
{
alert("not within range");
}
i++;
}
}
现在你已经修改了你的帖子,试试这个:
function x () {
var
x = 1000,
i = 0,
conditionals = [
(x >= 2000 && x < 3000),
(x >= 6000 && x < 7000)
];
while (conditionals.length > i) {
// x for some reason is always passed as true.
if (conditionals[i]) {
alert('Within range');
} else {
alert('Not within range');
}
i += 1;
}
}
你的布尔表达式写错了。这在数学上是可以的,但在JS中,如果你想知道值是否在一个范围内,你需要将每次求值视为两个关注点。
这样写,你可以清楚地看到1000不在2000和3000之间,也不在6000和7000之间。它们都等于false
。如果您得到的两个值都是true
,在您的原始示例中,这可能是因为类似的错误计算。
您返回的是postcodeNameBoolean
而不是postcodeNumberBoolean
。
一些修改:
-
stateSelected
(下面重命名为selectedState
)是未定义的。 -
validChangeInputStyle
在原帖子中拼写错误。 - 从变量名中删除对数据类型的解释。这是不好的练习。数组(例如,,东西整数,等等)
- 使用
+
运算符为数字的字符串表示法前缀,将其转换为Number
构造函数的实例。确保操作符触及变量名。 - 将开始大括号放在与声明相同的行上。
- 将
else {
与if
的右括号写在同一行。 - 每个作用域只使用一次
var
。 - 定义函数时,在函数括号前后设置一个空格。当应用函数时,只让圆括号触及函数名。
-
zipcodeNumber
(以前是postcodeNumberBoolean
)在if
和else
块中返回,因此它被分解为低于条件-写入一次。 - 使用
++
运算符以1
增加一个数字是i += 1
的语法糖(有时被误用)——这也是i = i + 1
的糖。所以你对你的意思做的抽象越少越好。+=
有更多的意图。然而,许多人会对此进行争论。
有几个问题需要你回答,希望能帮助我们解决这个问题。
-
zipcodeNumber
的目的是什么? 邮政编码的长度不是五位数吗?为什么有相等性测试来确保它在四位数之间? -
while
循环的目的是什么?你是故意不使用for
循环吗? 你能不能详细说说你的最终目标?也许有一种更清晰的方式来写这个,我们可以一起努力。
function matchZipcode () { var statePatterns = [ /(nsw|new'ssouth'swales)/gi, /(qld|queensland)/gi, /(vic|victoria)/gi, /(act|australian'scapital'sterritory)/gi, /(tas|tasmania)/gi, /(nt|northern'sterritory)/gi, /(sa|south'saustralia)/gi, /(wa|western'australia)/gi ], zipcodeRanges = [ (2000 <= zipcodeInput < 3000), (4000 <= zipcodeInput < 5000) ], zipcodeNumber = false, error = 'Error: post code does not match selected state.', zipcodeInput = +document.getElementById('postcode-input').value, i = 0; while (statePatterns.length > i) { if (statePatterns[i].test(selectedState)) { if (zipcodeRanges[i]) { alert('within range'); zipcodeNumber = true; validChangeInputStyle('postcode', 'postcode'); } else { invalidResponse('postcode', error, 'postcode'); } return zipcodeNumber; } i += 1; } }
相关文章:
- 通过js在新选项卡中有条件地打开url
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- jQuery-有条件地附加HTML
- 根据某些条件在视图之间切换
- 如何做到这一点,使代码在不传递条件后执行函数
- 将作用域存储在JSON中
- 有条件更新d3.js力图中节点的最佳方法
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- javascript中的布尔条件
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- 在特定条件下从存储在localStorage中的阵列中删除对象
- 谷歌数据存储查询中的多项选择抛出 API 错误:前提条件节点中失败错误
- Chrome扩展:如何使用插入CSS从Chrome存储中插入以变量为条件的CSS
- jQuery -将条件存储在字符串中并稍后执行
- Java脚本使用数组来存储条件
- 计算存储为字符串的布尔条件
- localStorage:防止在localStorage中存储重复值的条件
- If语句没有识别存储在变量中的条件