Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
119
rated 0 times [  122] [ 3]  / answers: 1 / hits: 33178  / 13 Years ago, sat, january 7, 2012, 12:00:00

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



item is a jQuery object, e.g. $(.c). You can assume that item.length == 1.



array is an array of jQuery objects, e.g. [$(.a), $(.b)]. Each item in this array may represent 0, 1, or more objects.



Here is how I thought 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

More From » jquery

 Answers
16

According to Felix's suggestion:



[$(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


[#88178] Thursday, January 5, 2012, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
matteo

Total Points: 81
Total Questions: 100
Total Answers: 96

Location: Honduras
Member since Sat, Jul 24, 2021
3 Years ago
;