2012-06-27 6 views
0
// Why doesn't this: 
_.invoke(['D','C'], 'lastIndexOf', ['A','B','C']) 

// Return this: 
[-1,2]? 

J'ai une chaîne. (Input)Utilisation de l'invocation de Underscore.js avec lastIndexOf

'ABC'

de Split dans un tableau. (InputBuffer)

[ 'A', 'B', 'C']

J'ai aussi un tableau avec des caractères arbitraires. (TriggerChars)

[ 'D', 'E']

Je veux vérifier le dernier élément de la InputBuffer pour voir si une correspondance des TriggerChars.

Je souhaite obtenir la dernière occurrence des deux TriggerChar dans le InputBuffer.

_.invoke(['D','E'], 'lastIndexOf', ['A','B','C']); 
// Returns [-1,-1] since C isn't D or E. 


_.invoke(['D','C'], 'lastIndexOf', ['A','B','C']); 
// Why doesn't this return [-1,2] 

_.lastIndexOf(['A','B','C'],'D') == -1 
_.lastIndexOf(['A','B','C'],'C') == 2 

Qu'est-ce que je ne reçois pas avec Invoke? http://underscorejs.org/#invoke

+0

Looks pour moi comme si le soulignement ne parcourt pas le tableau mais le traite comme un argument "unique"? Votre '_.invoke (['D', 'E'], 'lastIndexOf', ['A', 'B', 'C'])' pourrait aussi bien être faux que faux. – m90

Répondre

1

Qu'est-ce que vous avez besoin est:

_.map(['D', 'C'], function (x) { return _.lastIndexOf(['A', 'B', 'C'], x)}) 
2
var InputBuffer = ["A","B","C"]; 
var TriggerChars = ["D","E"]; 

_.indexOf(TriggerChars, InputBuffer[InputBuffer.length-1]) > -1; 

Equivaut à true si cela: Je veux vérifier le dernier élément de la InputBuffer pour voir si une correspondance des TriggerChars.

+0

Oups! Je voulais écrire une chose et écrire quelque chose de très différent. Pardon! Je veux obtenir la dernière occurrence des deux TriggerChars dans le InputBuffer. – janjarfalk

1
var inputBuffer = ["A","B","C"]; 
var triggerChars = ["D","E"]; 

triggerChars.indexOf(inputBuffer[inputBuffer.length-1]) > -1 

ou tout simplement sauter underscore, exactement la même solution ci-dessus, sauf la dépendance,

ok je mis à jour il alittle

var inputBuffer = ["A","B","C"]; 
var triggerChars = ["D","C"]; 

var index = []; 

for(var i = 0; i < triggerChars.length; i++){ 
    index.push(inputBuffer.lastIndexOf(triggerChars[i])); 
} 

console.log(index); 

-> [-1,2] 
+0

Je suis tellement désolé. Je voulais écrire une chose et écrire autre chose. Je veux obtenir la dernière occurrence des deux TriggerChars dans le InputBuffer. – janjarfalk

+0

@janjarfalk l'a mis à jour – skyw00lker

+0

Merci! Je vais aller avec la version de soulignement de celui-ci puisque je l'ai déjà dans le projet. – janjarfalk