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

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

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

'ABC'

拆分成一个数组。(输入缓冲区)

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

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

['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

4

3 回答 3

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

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

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

于 2012-06-27T09:37:28.577 回答
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]
于 2012-06-27T10:10:44.600 回答
1

你需要的是:

_.map(['D', 'C'], function (x) { return _.lastIndexOf(['A', 'B', 'C'], x)})
于 2012-06-27T13:32:36.070 回答