Plus généralement, dans la plupart des cas, le trait de soulignement fonctions qui prend une liste et un argument que les deux premiers arguments, de donner accès à la liste d'index que le dernier argument de l'itérateur. Cette distinction est importante quand il s'agit de deux soulignent fonctions, _.réduire et _.reduceRight, qui prennent note " comme troisième argument, dans le cas de ces deux l'index ne sera pas le deuxième argument, mais le troisième:
var destination = (function() {
var fields = ['_333st', 'offroad', 'fbi'];
return _.reduce(waybillInfo.destination.split(','), function(destination, segment, index) {
destination[fields[index]] = segment;
return destination;
}, {});
})();
console.log(destination);
/*
_333st: "NYARFTW TX"
fbi: "FTWUP"
offroad: "UP"
The following is better of course but not demonstrate my point:
var destination = _.object(['_333st', 'offroad', 'fbi'], waybillInfo.destination.split(','));
*/
Donc, si vous vouliez vous pourriez obtenir l'index à l'aide de souligner lui-même: _.last(_.initial(arguments))
. Une exception possible (je n'ai pas essayé)_.carte, car il peut prendre un objet au lieu d'une liste: "Si la liste est un objet JavaScript, iterator les arguments de l'est (en valeur, la clé de la liste)." - voir: http://underscorejs.org/#map