此代码将集成到AJAX聊天系统中,以实现用户名的制表符自动完成:

var usernames = new Array();
usernames[0] = "Saladin";
usernames[1] = "Jyllaby";
usernames[2] = "CadaverKindler";
usernames[3] = "qbsuperstar03";

var text = "Text and something else q";

// Start of the script to be imported
var searchTerm = text.slice(text.lastIndexOf(" ") + 1);
var i;
for(i = 0; i < usernames.length && usernames[i].substr(0,searchTerm.length) != searchTerm; i++);
// End of the script to be imported

document.write(usernames[i]);


需要注意的几点:用户名数组和text变量都将通过AJAX从聊天本身加载(不幸的是,我不知道),最终输出也将由AJAX处理。

有没有更有效的方法可以做到这一点?

另外,有关如何处理被搜索到的searchTerm的多个实例的任何技巧?

最佳答案

微观优化:无需获取子字符串并进行比较(创建大量临时字符串)...

usernames[i].substr(0,searchTerm.length) != searchTerm


...您应该使用indexOf,它不会创建临时字符串...

usernames[i].indexOf(searchTerm) == 0


您“发现searchTerm的多个实例”是什么意思?您能否举例说明您正在考虑的问题?

关于javascript - 有什么方法可以使此JavaScript选项卡完成脚本更有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2770052/

10-10 14:35