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

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

У меня есть строка. (Вход)Использование вызова Underscore.js с lastIndexOf

'ABC'

Split в массив. (InputBuffer)

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

У меня также есть массив с произвольными символами. (TriggerChars)

[ 'D', 'E']

Я хочу, чтобы проверить последний пункт в InputBuffer, чтобы увидеть, если соответствует какой-либо из TriggerChars.

Я хочу получить последнее вхождение обоих триггеров в 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 

Что мне не с Invoke? http://underscorejs.org/#invoke

+0

Looks для меня, как будто подчеркивание не перебирает массив, а рассматривает его как «единственный» аргумент? Ваш '_.invoke (['D', 'E'], 'lastIndexOf', ['A', 'B', 'C']);' также может быть false false. – m90

ответ

1

Что вам нужно:

_.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; 

Оценивает к true если: Я хочу, чтобы проверить последний пункт в InputBuffer, чтобы увидеть, если соответствует какой-либо из TriggerChars.

+0

Oups! Я имел в виду написать одно и написать что-то совсем другое. Сожалею! Я хочу получить последнее появление обоих триггеров в InputBuffer. – janjarfalk

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

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

или просто пропустить подчеркивание, точно такое же решение выше, за исключением зависимости,

ок я обновил его 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

Мне очень жаль. Я хотел написать одно и написать что-то еще. Я хочу получить последнее появление обоих триггеров в InputBuffer. – janjarfalk

+0

@janjarfalk обновил его – skyw00lker

+0

Спасибо! Я поеду с его подчеркивающей версией, так как у меня уже есть это в проекте. – janjarfalk

Смежные вопросы