Javascript 使用Js中的循环查找具有特定值的数据索引

Javascript 使用Js中的循环查找具有特定值的数据索引,javascript,angularjs,while-loop,indexing,find,Javascript,Angularjs,While Loop,Indexing,Find,我的数据有多个选项,其中只有一个选项的值正确为正确。我需要找到这个特定数据的索引。我用下面的代码实现了它。但是,我想知道,当我使用Angular Js时,这个方法是否有任何性能影响,以及是否有更好的方法 var data = [ {"option": "8", "correct": false}, {"option": "14", "correct": false},

我的数据有多个选项,其中只有一个选项的值
正确
正确
。我需要找到这个特定数据的索引。我用下面的代码实现了它。但是,我想知道,当我使用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;    

    }       
} 

不,并没有其他方法可以在数组中找到一个值,除非您完全遍历它,这将是O(n)

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


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

除了像这样的暴力搜索之外,没有其他方法可以在对象数组中找到具有特定属性值的对象,除非您以其他方式提前准备数据。您的特定搜索是在数组中向后搜索,这显然会产生与向前搜索不同的值(如果有多个匹配项)。这基本上是唯一的方法。不过,作为附带说明,请注意,如果找不到值,则此操作将失败。这正是你想要的。关于性能,只有阵列非常大时才可能成为问题。。。