【发布时间】:2014-10-25 09:18:40
【问题描述】:
我有一个包含多个选项的数据,其中只有一个的值 correct 为 true。我需要找到这个特定数据的索引。我用下面的代码实现了它。但是我想知道这种方法是否对性能有任何影响,以及当我使用 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