我有以下函数使用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构建一个或两个函数。
答案 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 );
}