[英]How to check in an array if a value exists
我正在使用Backbone / Marionette(和Coffeescript)构建一个javascript应用,我想检查文本字段中是否包含值。
如果我这样做不起作用:
questions = $("input[name='questions']").val().split(',')
if questions.indexOf(1) == -1
@ui.check.removeClass("green")
else
@ui.check.addClass("green")
如果我这样做,则可以工作(对数组进行硬编码):
questions = [1]
if questions.indexOf(1) == -1
@ui.check.removeClass("green")
else
@ui.check.addClass("green")
我究竟做错了什么?
从优良的String.prototype.split
手册中 :
返回值
在给定字符串中出现分隔符的每个点处拆分的字符串数组。
和很好的Array.prototype.indexOf
手册 :
描述
indexOf()
使用严格相等(===
或三重等于运算符使用的相同方法indexOf()
将searchElement
与Array的元素进行比较。
所以当你这样说:
questions = $("input[name='questions']").val().split(',')
if questions.indexOf(1) == -1
#...
您正在使用严格相等性在字符串数组( questions
)中搜索数字。 在JavaScript中, 1 === '1'
永远不会为真(与1 == '1'
),因此您的搜索将找不到任何东西。 您的硬编码示例有效,因为question
是那里的一个数字数组(而不是字符串)。
搜索一个字符串:
if questions.indexOf('1') == -1
或在搜索之前将字符串转换为数字:
questions = $("input[name='questions']").val().split(',').map (s) -> +s
if questions.indexOf(1) == -1
您将使用哪种方法取决于1
来源以及您打算对questions
做些什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.