开发者社区> 问答> 正文

在对象数组中,查找属性与搜索匹配的对象索引的最快方法

我一直在网上冲浪,试图找到一种有效的方法来做到这一点,但是却一无所获。我有一个看起来像这样的对象数组:

array[i].id = some number; array[i].name = some name; 我想做的就是找到id等于例如0、1、2、3或4之一的对象的索引。我想我可以做些类似的事情:

var indexes = []; for(i=0; i<array.length; i++) { (array[i].id === 0) ? { indexes[0] = i } (array[i].id === 1) ? { indexes[1] = i } (array[i].id === 2) ? { indexes[2] = i } (array[i].id === 3) ? { indexes[3] = i } (array[i].id === 4) ? { indexes[4] = i } } 尽管这可行,但它看起来非常昂贵且缓慢(更不用说难看了),尤其是在array.length可能很大的情况下。关于如何改善这一点的任何想法?我想过以某种方式使用array.indexOf,但是我看不到如何强制语法。这个

array.indexOf(this.id === 0); 例如,可能返回undefined。提前致谢! 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 01:19:28 378 0
1 条回答
写回答
取消 提交回答
  • 也许您想使用诸如“ map”之类的高阶函数。假设您要通过“字段”属性进行搜索:

    var elementPos = array.map(function(x) {return x.id; }).indexOf(idYourAreLookingFor); var objectFound = array[elementPos];

    2020-02-07 01:19:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载