Si desea permanecer con guión bajo para que su función de predicado pueda ser más flexible, aquí hay 2 ideas.
Método 1
Dado que el predicado para _.find
recibe tanto el valor como el índice de un elemento, puede usar el efecto secundario para recuperar el índice, así:
var idx;
_.find(tv, function(voteItem, voteIdx){
if(voteItem.id == voteID){ idx = voteIdx; return true;};
});
Método 2
Mirando la fuente de subrayado, así es como _.find
se implementa:
_.find = _.detect = function(obj, predicate, context) {
var result;
any(obj, function(value, index, list) {
if (predicate.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
Para hacer de esto una findIndex
función, simplemente reemplace la línea result = value;
con result = index;
Esta es la misma idea que el primer método. Lo incluí para señalar que el subrayado también usa efectos secundarios para implementar _.find
.