Si vous souhaitez conserver le trait de soulignement pour que votre fonction de prédicat soit plus flexible, voici 2 idées.
Méthode 1
Étant donné que le prédicat pour _.find
reçoit à la fois la valeur et l'index d'un élément, vous pouvez utiliser un effet secondaire pour récupérer l'index, comme ceci:
var idx;
_.find(tv, function(voteItem, voteIdx){
if(voteItem.id == voteID){ idx = voteIdx; return true;};
});
Méthode 2
En regardant la source de soulignement, voici comment _.find
est implémenté:
_.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;
};
Pour en faire une findIndex
fonction, remplacez simplement la ligne result = value;
par result = index;
Ceci est la même idée que la première méthode. Je l'ai inclus pour souligner que le soulignement utilise également un effet secondaire pour implémenter _.find
.