【问题标题】:Find the index of data with a particular value using loop in Js在Js中使用循环查找具有特定值的数据的索引
【发布时间】:2014-10-25 09:18:40
【问题描述】:

我有一个包含多个选项的数据,其中只有一个的值 correcttrue。我需要找到这个特定数据的索引。我用下面的代码实现了它。但是我想知道这种方法是否对性能有任何影响,以及当我使用 Angular Js 时是否有更好的方法。

 var data = [      

                  {"option": "8",      "correct": false},
                  {"option": "14",     "correct": false},
                  {"option": "10",      "correct": true},
                  {"option": "23",     "correct": false} 

 ];

var i = data.length;
while(i--) {
    if (data[i].correct == true){
        alert("Option:"+ data[i].option + " Index:"+ i);
    break;    

    }       
} 

【问题讨论】:

  • 除了像这样的蛮力搜索之外,没有其他方法可以在对象数组中找到具有特定属性值的对象,除非您以其他方式提前准备数据。您的特定搜索正在向后搜索数组,这显然会产生与向前搜索不同的值(如果有多个匹配项)。
  • 这基本上是这样做的唯一方法。但是,作为附带说明,请注意,如果找不到值,这将失败。 this answer 是您正在寻找的东西。关于性能,只有当数组很大时才会成为问题......

标签: javascript angularjs while-loop indexing find


【解决方案1】:

没有其他方法可以在数组中找到一个值,除非你完全循环它,这将是 O(n)。

但是,如果您的数组是根据您用于搜索的字段进行排序的,那么您可以改进搜索。在这种情况下,您可以使用二进制搜索,即 O(log n)。

如果数组太大,搜索会影响性能。它也与角度无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2017-11-27
    • 2021-10-04
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多