使用Underscore.js调用lastIndexOf

时间:2012-06-27 09:20:22

标签: javascript invoke underscore.js

// Why doesn't this:
_.invoke(['D','C'], 'lastIndexOf', ['A','B','C'])

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

我有一个字符串。 (输入)

'ABC'

拆分为数组。 (INPUTBUFFER)

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

我还有一个包含任意字符的数组。 (TriggerChars)

['D','E']

我想检查InputBuffer中的最后一项,看看是否匹配任何TriggerChars。

我想在InputBuffer中最后一次出现两个TriggerChars。

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

3 个答案:

答案 0 :(得分:2)

var InputBuffer = ["A","B","C"];
var TriggerChars = ["D","E"];

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

评估到true是否:我想检查InputBuffer中的最后一项,看看是否匹配任何TriggerChars。

答案 1 :(得分:1)

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

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

或者只是跳过下划线,上面完全相同的解决方案,除了依赖,

好吧我把它更新了

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]

答案 2 :(得分:1)

您需要的是:

_.map(['D', 'C'], function (x) { return _.lastIndexOf(['A', 'B', 'C'], x)})