Javascript 如果存在值,如何签入数组
我正在构建一个带有主干/木偶和Coffeescript的javascript应用程序,我想检查textfield中是否包含一个值 如果我这样做,它将不起作用:Javascript 如果存在值,如何签入数组,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,我正在构建一个带有主干/木偶和Coffeescript的javascript应用程序,我想检查textfield中是否包含一个值 如果我这样做,它将不起作用: questions = $("input[name='questions']").val().split(',') if questions.indexOf(1) == -1 @ui.check.removeClass("green") else @ui.check.addClass
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")
我做错了什么?罚款:
返回值
在给定字符串中分隔符出现的每个点拆分的字符串数组
罚款:
描述
indexOf使用严格相等(与===或三重相等运算符使用的方法相同)将searchElement与数组的元素进行比较
所以当你这么说的时候:
questions = $("input[name='questions']").val().split(',')
if questions.indexOf(1) == -1
#...
您正在使用严格相等搜索字符串数组中的数字。在JavaScript中,1=='1'与1=='1'不同,它永远不会为真,因此您的搜索将无法找到任何内容。您的硬编码示例之所以有效,是因为问题是一个数字数组,而不是字符串
搜索字符串:
if questions.indexOf('1') == -1
或在搜索前将字符串转换为数字:
questions = $("input[name='questions']").val().split(',').map (s) -> +s
if questions.indexOf(1) == -1
您会使用哪种方法取决于1的来源以及您打算对问题做什么。您是否尝试过打印问题的价值,并查看它是否符合您的期望?