如何将输入值匹配到数组的整个范围
How to match an input value to the whole range of an array?
我正在编写一个测试,用户应该填写一个答案,如果它与数组中的一个正确答案匹配,则字段变为绿色,否则变为红色。下面是有效的:
var arr = ["a", "b", "c"];
var id = document.getElementById("id");
if (id.value == arr[0]
|| id.value == arr[1]
|| id.value == arr[2]
|| id.value == arr[3]){id.style.backgroundColor = "#83C183";}
else {id.style.backgroundColor = "#E06969";}
但是我想去掉:
if (id.value == arr[0] || id.value == arr[1] || id.value == arr[2] || id.value == arr[3])
我尝试用for
循环迭代数组:
var arr = ["a", "b", "c"];
var id = document.getElementById("id");
for (var i = 0; i < arr.length; i++){
if (id.value == arr[i]){id.style.backgroundColor = "#83C183";}
else {id.style.backgroundColor = "#E06969";}
}
但是它只返回"c"
为真。在这种情况下,我如何选择数组中的所有项目?
您可以简单地使用indexOf
方法来检查答案是否存在于数组中
var arr = ["a", "b", "c"];
var id = document.getElementById("id");
if(arr.indexOf(id.value) > -1)
id.style.backgroundColor = "#83C183";
else
id.style.backgroundColor = "#E06969";
创建一个标志变量,当它与数组中的项匹配时设置。然后检查此标志以确定是将背景色设置为绿色还是红色。
示例代码:
var arr = ["a", "b", "c"];
var id = document.getElementById("id");
var flag = false;
for (var i = 0; i < arr.length; i++){
if (id.value == arr[i])
{
flag = true;
break;
}
}
if (flag) {id.style.backgroundColor = "#83C183";}
else {id.style.backgroundColor = "#E06969";}
一种更简洁的实现方式如下:
function evaluateAnswerFilter() {
var arr = ["a", "b", "c"];
var inputEl = document.getElementById("id");
var truth = arr.filter(function(option) {
return option === inputEl.value
});
truth.length ? inputEl.style.backgroundColor = "#83C183" :
inputEl.style.backgroundColor = "#E06969"
}
function evaluateAnswerIncludes() {
var arr = ["a", "b", "c"];
var inputEl = document.getElementById("id");
arr.includes(inputEl.value) ? inputEl.style.backgroundColor = "#83C183" :
inputEl.style.backgroundColor = "#E06969"
}
<body>
<input name="id" id="id" type="text" />
<button onclick="evaluateAnswerFilter()">Evaluate with Filter</button>
<button onclick="evaluateAnswerIncludes()">Evaluate with Includes</button>
</body>
相关文章:
- 如何通过数组更新角度子范围
- 在对象数组中查找多个值的d3范围
- 从指定范围创建字符数组
- 如何创建一个方法来验证数组的范围
- JS:从数组中查找特定范围内的最低/最高数字
- 根据范围过滤角度.js数组
- 将数组传递给函数或确保它在范围内
- Angularjs:访问范围变量数组并计算平均值
- 搜索包含包含所需值的范围的数组
- 如何检查符号是否在范围(或数组)中
- 返回Javascript中给定正则表达式的文本范围数组
- 检查鼠标光标是否在带坐标的数组范围内
- 对在10的倍数的相同范围内的数组值进行分组
- 短范围命名空间数组是什么意思
- AngularJs 帮助,在传递给隔离范围的对象中选择数组时遇到问题
- 如何获取数组第一个元素的范围
- 传递数组 -- 范围
- 查找数组/范围javascript中所有丢失的元素
- 承诺返回未更新的数组范围
- 在数组范围中查找索引