Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果存在值,如何签入数组_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 如果存在值,如何签入数组

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

我正在构建一个带有主干/木偶和Coffeescript的javascript应用程序,我想检查textfield中是否包含一个值

如果我这样做,它将不起作用:

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的来源以及您打算对问题做什么。

您是否尝试过打印问题的价值,并查看它是否符合您的期望?