我有一个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);
答案 0 :(得分:10)
确实,有一种方法可以优化它。优化主要是内存使用 - 实际的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