将inArray()转换为JavaScript

时间:2015-02-18 12:51:51

标签: javascript

我有以下函数使用jQuery的inArray()函数

function initialStrandOptions() {
  if($('#component_id_1').prop('checked') == true){
    var strand_options = $('.strand_options').find('option');
      strand_options.each(function(){
        if( jQuery.inArray($(this).val(), ['4', '5', '6', '7']) != -1 ){
          $(this).hide();
        }
      });  
   } 
}

因为你可以看到这是说每个值检查我们是否在数组中匹配(-1),如果没有匹配(或只是!= -1),则隐藏该选项。

我希望用JavaScript重新编写它(我不想依赖于jQuery)但是我已经有一段时间了,因为我已经完成了任何纯JavaScript。我知道我可以使用indexOf()

更新

基于评论和答案,我认为我没有解释我想要完全实现的目标。在函数中我根本不想使用任何jQuery(不仅仅是inArray函数)。我想了解如何仅使用JavaScript构建一个或两个函数。

3 个答案:

答案 0 :(得分:0)

$.inArray()方法类似于JavaScript的本机.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$.inArray()返回0.

答案 1 :(得分:0)

function inArray(needle, haystack) {
  if (haystack.indexOf(needle) !== -1) {
    return true;
  } else {
    return false;
  }
}

答案 2 :(得分:0)

如果您查看了jquery的source code,则会看到他们在indexOf函数中使用inArray。像这样:

inArray: function( elem, arr, i ) {
    return arr == null ? -1 : indexOf.call( arr, elem, i );
}