1

ページの「キーワードの内訳」を取得する必要があります。ボーナス:それは非常に速い必要があります。

速度を上げるために、テキストノードについてのみDOMをスキャンする必要がありますか?これにどのようにアプローチするかはよくわかりません。

4

1 に答える 1

3

innerTextおそらく、 /を実行してからtextContent単語を分割するのが最善でしょう。単語が分割されている(単語の半分が太字である)などの場合、テキストノードの検索は中断されます。また、DOMトラバーサルをC++ではなくJSに移動します。

var content = document.body.innerText || document.body.textContent;
var words = content.match(/\b\w+\b/g);

var counts = {};
for (var i = 0, len = words.length; i < len; i++){
  var word = words[i];
  counts[word] = (counts[word] || 0) + 1;
}

console.log(words);

ただし、試してからベンチマークを実行せずにパフォーマンスを推測するのは難しい場合があるため、実際には、ベストショットを与えてそこから進んでください。

于 2013-03-24T00:14:00.667 に答える