当前位置:   jquery > 正文

JavaScript中的IndexOf方法比遍历数组更有效吗?

javascript,arrays,performance,indexof,mongodb,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我有一个JSON对象数组,我想找到具有特定属性的对象。我知道这看起来像是一个重复的问题,但请继续,因为我认为它与之前的问题略有不同。

与我一起工作的一个人建议使用IndexOf,这让我开始思考。mongo中有类似于$ elemMatch功能的东西吗?是否有一些命令基本上用伪代码表示“从此数组中获取具有此属性的对象”?通过迭代,我感觉伪代码说“看一下该数组中的第一个对象。如果此对象具有此属性,请给我这个对象。否则,请看此数组中的第二个对象..... ”

我理解如何像朋友建议的那样使用IndexOf,但是我考虑得越多,我开始想到IndexOf方法可能会减少代码行的数量,但是最终它不必遍历数组中的对象来找到它我需要的那个的索引?因此,如果我想对具有此属性的对象进行某些操作,并且使用IndexOf方法获取索引,则可以引用myArray [indexFromIndexOfMethod]之类的对象,然后相应地对其进行修改,对吗?因此,如果javascript遍历数组本身以执行IndexOf方法,为什么不只编写自己的迭代并保存步骤呢?现在,如果IndexOf方法使用一种比仅遍历并检查每个数组元素更有效的方法来定位数组元素,那么使用它对我来说是有意义的。除此以外,



1> deceze..:

Array.prototype.indexOf也只是遍历数组并返回具有匹配值的第一个索引。您可以对循环执行相同的操作。它可能for循环快,可能不会比循环快,因为它indexOf可以用本机代码实现,并且与for循环可以优化的方式不同,但是没有根本区别。

如果您经常需要尽快访问特定值,则值得通过对象中的该值对其进行索引。意思是,如果要.foo经常通过属性查找特定对象,请执行以下操作:

var byFoo = {}
for (var i = 0; i < myArray.length; i++) {
    byFoo[myArray[i].foo] = myArray[i];
}

然后,您可以使用进行即时访问byFoo['baz']

当然,这可能会带来额外的开销,即可能在多个副本中维护这些索引,但是它将以许多幅度加快阵列访问速度。您需要权衡利弊。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13621
推荐阅读
  • 如何解决《为什么我的图像高度不能正确缩放?》经验,为你挑选了1个好方法。javascript,css,image-resizing,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成... [详细]

  • 如何解决《S.browser_fallback_url是什么时候在Chrome中引入的?》经验,为你挑选了1个好方法。javascript,android,google-chrome,android-intent,progressive-w... [详细]

  • 如何解决《IE11上的鼠标事件属性未定义》经验,为你挑选了0个好方法。javascript,debugging,window,internet-explorer-11,eventhandler,DevBox,在线流程图,编程,编程问答,程序... [详细]

  • 如何解决《使用Reactv0.14.3实现路由器》经验,为你挑选了0个好方法。javascript,reactjs,react-jsx,react-router,react-routing,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《在Promise中攻击与捕获》经验,为你挑选了1个好方法。javascript,promise,es6-promise,chrome,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成... [详细]

  • 如何解决《简单的转换练习,方法不返回正确的值》经验,为你挑选了1个好方法。javascript,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开... [详细]

  • 如何解决《我的网站在移动设备上显示为桌面》经验,为你挑选了1个好方法。javascript,css,mobile,responsive-design,twitter-bootstrap,DevBox,在线流程图,编程,编程问答,程序员,开发... [详细]

  • 如何解决《JavaScript中的重入》经验,为你挑选了1个好方法。javascript,reentrancy,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发... [详细]

  • 如何解决《React.js在悬停问题上显示组件的一部分》经验,为你挑选了1个好方法。javascript,reactjs,css,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间... [详细]

  • 如何解决《如何在Three.js中拉伸圆几何?》经验,为你挑选了1个好方法。javascript,three.js,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳... [详细]

  • 如何解决《TypeScript中的深度克隆(保留类型)》经验,为你挑选了2个好方法。javascript,typescript,lodash,编辑器,https,ajax,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工... [详细]

  • 如何解决《this.value返回包含值的括号》经验,为你挑选了1个好方法。javascript,jquery,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]

  • 如何解决《动态添加脚本时未定义$/jQuery》经验,为你挑选了1个好方法。javascript,jquery,https,ajax,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《使用具有不同前缀和后缀表达式的共享子表达式进行正则表达式更改》经验,为你挑选了0个好方法。javascript,regex,json,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成... [详细]

  • 如何解决《加载角度视图》经验,为你挑选了0个好方法。javascript,ajax,angularjs,angular-routing,ng-view,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二... [详细]

  • 如何解决《从ReduxReducer发出事件》经验,为你挑选了0个好方法。javascript,redux,容器,服务器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线... [详细]

  • 如何解决《给定一个函数管道(foo,bar,baz)(1,2,3),你如何在javascript中实现它等同于baz(bar(foo(1,2,3))》经验,为你挑选了1个好方法。javascript,functional-programmi... [详细]

  • 如何解决《如何检查javascript数组中是否存在密钥?》经验,为你挑选了2个好方法。javascript,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前... [详细]

  • 如何解决《如果未选中复选框,则阻止表单提交》经验,为你挑选了1个好方法。javascript,forms,ajax,checkbox,jquery,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码... [详细]

  • 如何解决《long-polljQuery.ajax()在手机休眠后无法回调?》经验,为你挑选了0个好方法。javascript,ajax,jquery,google-chrome,long-polling,DevBox,在线流程图,编程,编... [详细]

相关标签
  

闽ICP备14008679号