javascript - 如何检查数组中是否存在 jQuery 对象?

标签 javascript jquery arrays

给定一个 item 和一个 array,我想知道 array 中是否存在 item

item 是一个 jQuery 对象,例如$(".c")。您可以假设 item.length == 1

array 是 jQuery 对象的数组,例如[$(".a"), $(".b")]。此数组中的每一项可能代表 0、1 或更多对象。

以下是我的实现方式:( 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;
}

你能找到更优雅的实现吗?


示例:

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

最佳答案

根据Felix的建议:

[$(selector1), $(selector2), ... ] 可以简化为

$(selector1, selector2, ...)

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

然后它可以实现为:

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

Live demo here

关于javascript - 如何检查数组中是否存在 jQuery 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769022/

相关文章:

javascript - 为什么文本/按钮在页面加载时跳来跳去(Chrome)?

javascript - 根据旋转改变运动

javascript - javascript 中的 Foreach 改变数组的顺序

javascript - jQuery 和 Zoomooz.js 之间的冲突 : animate & zoomTarget at the same time

jquery - 等到 bootstrapTable 完全加载后再执行某些操作

php - 将两个数组合并为一个(追加)

将指针的结构信息转换为数组

javascript - 使用 Knockout 和 jQuery 延迟加载图像

javascript - jQuery html onclick 存储 anchor ID,然后从 javascript 数组中提取内容

jquery - 使用 jQuery 删除 "empty"段落