【问题标题】:jQuery check in array and return true or falsejQuery 签入数组并返回 true 或 false
【发布时间】:2013-06-13 19:41:13
【问题描述】:

我有一个页面数组

var $pages = ["events", "template", "privacy", "terms", "mentor", "party", "getinvolved", "tools"];

我想做的是

  if ( $body[0].id !== anyOfThePageInTheArray ) {
    //do something here
    });

如果他们所在的页面不是数组中的页面之一,我该怎么办。

我尝试过.inArray.each,但我想我可能做错了什么。

【问题讨论】:

    标签: jquery arrays logic


    【解决方案1】:

    原生 Array.indexOf 工作正常:

    if ($pages.indexOf($body[0].id) === -1) {
        // It's not in there
    }
    

    但如果你坚持使用 jQuery:

    if ($.inArray($body[0].id, $pages) === -1) {
        // It's not in there
    }
    

    【讨论】:

    • @karthikr:OP 的问题有$body[0].id !== anyOfThePageInTheArray,所以看起来条件是检查元素是否不在数组中。
    • 它对我不起作用我不知道为什么:/ 就像它从不检查整个数组并且已经返回。
    【解决方案2】:

    试试:

    if($pages.indexOf($body[0].id) == -1){
        //code here
    }
    

    【讨论】:

      【解决方案3】:

      你应该使用

      if($.inArray($body[0].id,$pages) === -1)
      

      当第二个参数不在数组(第一个参数)中时,它将返回 -1。否则,它返回元素的索引。

      顺便说一句,$body[0].id 返回例如“事件”,还是一个数字?

      【讨论】:

      • 我认为它正在返回该参数的页面名称
      • 如果您可以使用console.log($body[0].id); console.log($pages); 进行调试以了解发生了什么问题之前...
      • matiaslaporte 我想我知道出了什么问题,我忘记了我的右括号,所以这段代码有效,但仅供参考,你的平等应该是 ===
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2019-12-04
      • 2017-02-08
      相关资源
      最近更新 更多