我有一个 textarea 字段,在每次按键时,我想将 textarea 中的最后一行推送到一个数组。
目前,我在每次按键时构建数组以获取文本区域中的最后一行。有没有办法优化这个?意思是,无需构造数组即可获取文本区域中的最后一行。
jQuery('#mytextarea').keypress(function() {
lines = jQuery('#mytextarea').text().split("\n");
lastLine = lines[lines.length - 1];
});
if(.. some condition ..) {
myArray.push(lastLine);
最佳答案
的确,有一种方法可以优化它。优化主要是内存使用 - 实际 CPU 使用也得到改善。
优化版本依赖于lastIndexOf()
。具体如下:
jQuery("#mytextarea").keypress(function() {
var content = this.value;
var lastLine = content.substr(content.lastIndexOf("\n")+1);
});
您会注意到一些微优化:
this
已经是 DOM 元素。仅仅为了获取文本内容而重新调用 jQuery 毫无意义。在处理器上节省一点- 使用
lastIndexOf
允许我在最后一个\n
之后获取任何内容
Dogbert为 lastIndexOf
提供了基准:http://jsperf.com/splitting-large-strings
关于javascript - 从按键上的文本区域获取最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839908/