在keypress上从textarea获取最后一行

Sri*_* AD 4 javascript jquery

我有一个textarea字段,在每个按键上,我想将textarea中的最后一行推到一个数组.

目前,我正在每个按键上构建数组以获取textarea中的最后一行.有没有办法优化这个?意思是,在textarea中获取最后一行而不必构造数组.

jQuery('#mytextarea').keypress(function() {
    lines = jQuery('#mytextarea').text().split("\n");
    lastLine = lines[lines.length - 1];
Run Code Online (Sandbox Code Playgroud)

});

if(.. some condition ..) {
myArray.push(lastLine);
Run Code Online (Sandbox Code Playgroud)

Séb*_*uld 10

实际上,有一种方法可以优化它.优化主要是内存使用 - 实际的CPU使用率也得到了提高.

优化版依赖于lastIndexOf().它如下:

jQuery("#mytextarea").keypress(function() {
     var content = this.value;
     var lastLine = content.substr(content.lastIndexOf("\n")+1);
});
Run Code Online (Sandbox Code Playgroud)

您会注意到一些微优化:

  • this已经是DOM元素了.重新调用jQuery只是为了获取文本内容.在处理器上节省一点
  • 使用lastIndexOf允许我在最后一次之后得到任何东西\n

Dogbert为以下网站提供了基准lastIndexOf: http: //jsperf.com/splitting-large-strings