Monday, 26 September 2016

javascript - How to check if jQuery object exist in array?



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:



Hello

Stack

Overflow



Have

a

nice

day!


Bye bye



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

Answer



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


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...