4

テキストエリアフィールドがあり、キーを押すたびに、テキストエリアの最後の行を配列にプッシュしたいと思います。

現在、キーを押すたびに配列を作成して、テキストエリアの最後の行を取得しています。これを最適化する方法はありますか?つまり、配列を作成せずにテキストエリアの最後の行を取得します。

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 を再度呼び出しても、ほとんど意味がありません。プロセッサを少し節約
  • を使用lastIndexOfすると、最後の後に何かを取得できます\n

Dogbertは次のベンチマークを提供しましたlastIndexOf: http://jsperf.com/splitting-large-strings

于 2013-05-30T15:21:40.167 に答える