How to check if jQuery object exists in an array?

Given item and array , I would like to know if item exists in array .

item - jQuery object, for example. $(".c") . You can assume that item.length == 1 .

array is an array of jQuery objects, for example. [$(".a"), $(".b")] . Each element in this array can represent 0, 1 or more objects.

Here's how I decided to implement this: ( live demo here )

 function inArray(item, arr) { for (var i = 0; i < arr.length; i++) { var items = $.makeArray(arr[i]); for (var k = 0; k < items.length; k++) { if (items[k] == item[0]) { return true; } } } return false; } 

Can you find a more elegant implementation?


Example:

HTML:

 <div class="a">Hello</div> <div class="a">Stack</div> <div class="a">Overflow</div> <div class="b">Have</div> <div class="b">a</div> <div class="b">nice</div> <div class="b">day!</div> <div class="c">Bye bye</div> 

JS:

 console.log(inArray($(".a").eq(2), [$(".a"), $(".b")])); // true console.log(inArray($(".b").eq(3), [$(".a"), $(".b")])); // true console.log(inArray($(".c"), [$(".a"), $(".b")])); // false console.log(inArray($(".a").eq(2), [$(".b")])); // false console.log(inArray($(".a").eq(2), [])); // false console.log(inArray($(".c"), [$("div")])); // true 
+6
source share
5 answers

As suggested by Felix:

[$(selector1), $(selector2), ... ] can be simplified to

 $(selector1, selector2, ...) 

or

 $(selector1).add(selector2)... 

and then it can be implemented as:

 function inArray(item, arr) { return (arr.index(item) != -1); } 

Live demo here

+9
source

What about

 if(jQuery.inArray(some, array) === -1) { //process data if "some" is not in array } else { //process if "some" is in array } 

read here: http://api.jquery.com/jQuery.inArray/

+8
source
 if($.inArray("valueYouWantToFind", nameOfTheArray) == true) { Your code; } Eg., var userChoice = ["yes"]; if($.inArray('yes',userChoice) == true) { alert("found"); } 
0
source
 console.log(!!~$.inArray("a", ["a", "b", "c"])); 
0
source
 data = [ {val:'xxx',txt:'yyy'}, {val:'yyy',txt:'aaa'}, {val:'bbb',txt:'ccc'} ]; var dummyArray = []; var distinctValueArray = []; $.each(data, function (index, firstobject) { //push first element of object in both dummy array and distinct array. if (index == 0) { distinctValueArray.push(firstobject); dummyArray.push(firstobject.txt); } else { //started from 2nd index. if ($.inArray(firstobject.txt, dummyArray) == -1) { distinctValueArray.push(firstobject); } dummyArray.push(firstobject.txt); } }); dummyArray.length=0; 
-1
source

Source: https://habr.com/ru/post/905391/


All Articles