4

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

目前,我正在每个按键上构造数组以获取文本区域中的最后一行。有没有办法优化这个?意思是,无需构造数组即可获取文本区域的最后一行。

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

});

if(.. some condition ..) {
myArray.push(lastLine);
4

1 回答 1

10

事实上,有一种方法可以优化这一点。优化主要是内存使用 - 实际 CPU 使用率也有所提高。

优化后的版本依赖lastIndexOf(). 如下:

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

您会注意到一些微优化:

  • this已经是 DOM 元素。仅仅为了获取文本内容而重新调用 jQuery 没有什么意义。在处理器上节省一点
  • usinglastIndexOf允许我在最后一次之后得到任何东西\n

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

于 2013-05-30T15:21:40.167 回答