在keypress上从textarea获取最后一行

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

目前,我正在每个按键上构建数组以获取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允许我在最后一个之后得到任何东西

DogbertlastIndexOf提供了一个基准: http : //jsperf.com/splitting-large-strings