繁体   English   中英

如何检查数组是否存在值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM