如何检查数组中是否存在jQuery对象? [英] How to check if jQuery object exist in array?
问题描述
给定一个item
和一个array
,我想知道array
中是否存在item
.
item
是一个 jQuery 对象,例如$(".c")
.你可以假设 item.length == 1
.
array
是一个 jQuery 对象数组,例如[$(".a"), $(".b")]
.这个数组中的每一项都可以代表 0、1 或更多的对象.
这是我想到的实现方式:(现场演示)
function inArray(item, arr) {for (var i = 0; i < arr.length; i++) {var items = $.makeArray(arr[i]);for (var k = 0; k
你能找到更优雅的实现吗?
<小时>示例:
HTML:
你好<div class="a">堆栈</div><div class="a">溢出</div><div class="b">有</div><div class="b">a</div><div class="b">不错</div><div class="b">day!</div><div class="c">再见</div>
JS:
console.log(inArray($(".a").eq(2), [$(".a"), $(".b")]));//真的console.log(inArray($(".b").eq(3), [$(".a"), $(".b")]));//真的console.log(inArray($(".c"), [$(".a"), $(".b")]));//错误的console.log(inArray($(".a").eq(2), [$(".b")]));//错误的console.log(inArray($(".a").eq(2), []));//错误的console.log(inArray($(".c"), [$("div")]));//真的
根据 Felix 的建议:
[$(selector1), $(selector2), ... ]
可以简化为
$(selector1, selector2, ...)
或
$(selector1).add(selector2)...
然后它可以实现为:
function inArray(item, arr) {返回 (arr.index(item) != -1);}
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
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);
}
这篇关于如何检查数组中是否存在jQuery对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!