如何使用 jQuery 在 JavaScript 数组中查找对象的索引

2023-11-22

我试图在 jquery 的数组中查找对象的索引。 我无法使用 jQuery.inArray 因为我想匹配某个属性上的对象。 我在用:

jQuery.inObjectArray = function(arr, func)
    {
        for(var i=0;i<arr.length;i++)
            if(func(arr[i]))
                return i;
        return -1;
    }

然后调用:

jQuery.inObjectArray([{Foo:"Bar"}], function(item){return item.Foo == "Bar"})

有内置的方法吗?


不确定为什么 every() 不适合你:

损坏 - 请参阅下面的修复

function check(arr, closure)
{
    $.each(arr,function(idx, val){
       // Note, two options are presented below.  You only need one.
       // Return idx instead of val (in either case) if you want the index
       // instead of the value.

       // option 1.  Just check it inline.
       if (val['Foo'] == 'Bar') return val;

       // option 2.  Run the closure:
       if (closure(val)) return val;
    });
    return -1;
}

Op 评论的附加示例。

Array.prototype.UContains = function(closure)
{
    var i, pLen = this.length;
    for (i = 0; i < pLen; i++)
    {
       if (closure(this[i])) { return i; } 
    }
    return -1;
}
// usage:
// var closure = function(itm) { return itm.Foo == 'bar'; };
// var index = [{'Foo':'Bar'}].UContains(closure);

好吧,我的第一个例子已经被吓住了。经过大约 6 个月和多次点赞后向我指出。 :)

正确地, check() 应该如下所示:

function check(arr, closure)
{
    var retVal = false; // Set up return value.
    $.each(arr,function(idx, val){
       // Note, two options are presented below.  You only need one.
       // Return idx instead of val (in either case) if you want the index
       // instead of the value.

       // option 1.  Just check it inline.
       if (val['Foo'] == 'Bar') retVal = true; // Override parent scoped return value.

       // option 2.  Run the closure:
       if (closure(val)) retVal = true;
    });
    return retVal;
}

这里的原因很简单......返回的范围是错误的。

至少原型对象版本(我实际检查过的版本)有效。

谢谢克拉萨洛特。我的错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jQuery 在 JavaScript 数组中查找对象的索引 的相关文章

随机推荐

  • 如何添加 SOAP 安全标头

    我读了很多文章和答案 但我无法解决 我在我的项目中使用 NET Framework 4 0 因此 我首先将 WebService 添加为服务引用 并在 app config 上获取绑定 我将列出我的尝试 尝试 1 我像这样实例化了服务并添加
  • 无法使用 Visual Studio 2015 命令行工具编译和链接简单的 C++ 程序

    使用 Visual Studio 2015 我无法再使用命令行工具编译和链接简单的 C 程序 考虑 main cpp include
  • Geochart:使用 ISO 3266-2 区域代码但显示真实姓名

    我正在使用Google 可视化 Geochart API创建一个国家地区的地图 我提供ISO 3266 2 国家细分代码并得到正确的结果 然而 在图表中将 ISO 3266 2 代码显示为标签是一种糟糕的用户体验 所以我想提供一个自定义标签
  • 使用代码启动 Photoshop 操作

    是否可以使用代码启动 Photoshop 操作 我的意思是通过批处理文件在 Photoshop 中启动该操作 或类似的东西 较新版本的 Photoshop CS5 和 CS6 是我使用过的唯一版本 支持一项称为Droplets它允许您创建可
  • 是否可以将 MyBatis 和 QueryDSL/jOOQ 结合起来?

    MyBatis 提供开箱即用的映射 本地缓存和日志记录 QueryDSL jOOQ 提供 SQL 语句的编译时检查和 IDE 自动完成功能 是否可以将它们结合起来 换句话说 我想使用 QueryDSL 或 jOOQ 创建一个查询 然后使用
  • java:字符串数组列表并删除

    在这样的测试中 Test public void test List
  • 强制 Flex 更新屏幕?

    这可能是一个初学者的问题 但我一生都无法弄清楚 我正在使用 Flex 为一个大型项目开发 GUI 特别是底部的状态栏 在我的 StatusBar 类中是一个 ProgressBar 其他正在工作的类可以告诉它在进展时更新 更改栏完成和标签
  • 登录表单是否需要令牌来抵御 CSRF 攻击?

    据我目前所知 令牌的目的是防止攻击者伪造表单提交 例如 如果网站有一个表单将添加的商品输入到您的购物车 那么攻击者可能会向您的购物车发送您不想要的商品 这是有道理的 因为购物车表单可能有多个有效输入 攻击者所要做的就是知道网站正在销售的商品
  • SignalR 中心中每个 web-api 请求的简单注入器依赖项

    根据this发布后 应该可以将每个网络请求的依赖项注入 SignalR 集线器 尽管有一些限制 例如 OnDisconnected 方法的问题 就我而言 它是 ASP Web API 不是 MVC 但由于某种原因它不起作用 以下是相关部分
  • swift 如何删除可选字符串字符

    如何删除可选字符 let color colorChoiceSegmentedControl titleForSegmentAtIndex colorChoiceSegmentedControl selectedSegmentIndex p
  • 如何让 Cucumber/Capybara/Mechanize 与外部非轨道站点一起工作

    我正在尝试在 Google 应用程序脚本上执行 BDD 我知道原则上我应该能够使用 Cucumber Capybara 和 Mechanize 的某种组合在非 Rails 外部站点上执行 BDD 在本例中 我尝试测试我创建的 Google
  • C++中获取返回值的类型

    假设我们有一个函数f它返回一个未知类型的值 我们称之为T 并采用类型的值T作为一个论点 可能还有一些其他论点 我如何获得返回类型f在 C 14 中 如果我们知道参数类型 就有一种方法可以做到这一点 通过std result of 如果我们知
  • 当客户端过早断开连接时,如何对烧瓶上的破损管道错误进行例外处理?

    我使用 Flask 进行开发 而不是生产 并且我有一个 ajax 请求的视图 如下所示 application route xyz
  • Scala 中硬币找零的 StackOverflowError?

    我正在编写一个递归函数硬币 零钱 问题在斯卡拉 我的实现因 StackOverflowError 而中断 我无法弄清楚为什么会发生这种情况 Exception in thread main java lang StackOverflowEr
  • 需要解决 .Net 母版页名称重整问题

    我正在评估将基于旧框架集的 ASP NET 网站转换为使用母版页 唯一阻碍我的是更新每个页面以处理名称修改所需的大量工作 我的大部分问题都与引用硬编码 ID 的 javascript 有关 有没有办法让我告诉 ASP Net 对于特定的内容
  • 无需点击地图即可在 Google 地图上使用箭头键导航

    我尝试在 Google Maps API 文档和此处进行搜索 但我无法找到如何执行此操作 我试图在地图上默认设置箭头键导航 而无需单击地图区域来启用它 我尝试了以下解决方案但没有成功 map getDiv focus document ge
  • 更改 corrplot.mixed 中的文本颜色

    In the r包裹corrplot 您可以混合相关矩阵的下半部分和上半部分的图形类型 以形成良好的视觉效果 我希望在矩阵的下半部分有数字 在矩阵的上半部分有椭圆 这都很好 但是 根据我的数据 我看不到一些相关数字 因为它们接近 0 下面是
  • 具有固定高度的CSS自动换行/文本溢出[重复]

    这个问题在这里已经有答案了 我有以下例子 http jsfiddle net qFDxp HTML div class test Lorem ipsum dolor sit amet consetetur sadipscing elitr
  • Foldl 是尾递归,那么为什么foldr 运行得比foldl 快呢?

    我想测试foldl 与foldr 据我所知 由于尾递归优化 您应该尽可能使用foldl而不是foldr 这是有道理的 然而 运行这个测试后我很困惑 foldr 使用 time 命令时需要 0 057 秒 a a gt a gt a a x
  • 如何使用 jQuery 在 JavaScript 数组中查找对象的索引

    我试图在 jquery 的数组中查找对象的索引 我无法使用 jQuery inArray 因为我想匹配某个属性上的对象 我在用 jQuery inObjectArray function arr func for var i 0 i