使用 Underscore.js 的调用与 lastIndexOf

Using Underscore.js's invoke with lastIndexOf

本文关键字:lastIndexOf 调用 Underscore js 使用      更新时间:2023-09-26
// Why doesn't this:
_.invoke(['D','C'], 'lastIndexOf', ['A','B','C'])
// Return this:
[-1,2]?

我有一根绳子。(输入)

"ABC"

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

["A"、"B"、"C"]

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

["D","E"]

我想检查输入缓冲区中的最后一项,以查看是否匹配任何触发器字符。

我想在输入缓冲区中获取两个触发器字符的最后一次出现。

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

我不能通过调用获得什么?http://underscorejs.org/#invoke

var InputBuffer = ["A","B","C"];
var TriggerChars = ["D","E"];
_.indexOf( TriggerChars, InputBuffer[InputBuffer.length-1] ) > -1;
计算结果是否

true我想检查输入缓冲区中的最后一项,以查看是否匹配任何触发器字符。

你需要的是:

_.map(['D', 'C'], function (x) { return _.lastIndexOf(['A', 'B', 'C'], x)})
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]