不确定为什么这不起作用。不应该返回索引并且循环停止。 我只需要返回第一个值为true的索引,然后不返回任何其他值
var index = _.each([false, true, true],function(flag, index){
if(flag){ return index }
});
答案 0 :(得分:4)
_.each
都会为数组中的每个元素调用迭代器函数。我认为_.indexOf
正是您所寻找的。 p>
var index = _.indexOf([false, true, true], true);
答案 1 :(得分:2)
_.each
只是一个迭代器,不会返回索引。要使用它来查找您正在尝试执行的索引,您可能希望执行以下操作:
var trueIndex = -1;
_.each([false, true, true],function(flag, index){
if (trueIndex < 0 && flag) {
trueIndex = index;
}
});
if (trueIndex != -1) {
alert(trueIndex);
}
但是,使用while循环可能更容易:
var flags = [false, true, true]
var f, index = 0;
while(f = flags[index++]) {
if (f) break;
}
alert (index);
答案 2 :(得分:0)
indexOf只返回一个你需要的值:) 但是......如果你需要所有这些,你可以使用带过滤器的地图:D也许有一个更简单的解决方案......
_(_.map([false, true, true], function(obj, index){ if(obj)return index; })).filter(function(num, index){return num != undefined});
这将返回一个数组:[1,2]