БлогNot. Javascript: определяем количество слов в документе и составляем из них массив

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Javascript: определяем количество слов в документе и составляем из них массив

Тоже парсинг текста, только не такой примитивный, как в начале блога.

Цель - получить список слов из всего документа или нужного раздела, избавиться от тегов и пустых строк, затем определить количество слов и, если нужно, положить их в массив.

В простейшем случае, конечно, возможно и однострочное решение:

alert (document.body.innerText.split(/\s+/).length);

где-нибудь в теге скрипта.

Но грамотнее, конечно, будет написать рекурсивный метод для получения списка слов и немного пофильтровать контент страницы. Вот пример с комментариями.

<html>
<body>
 <div id="content">
  Lorem ipsum dolor sit <b>a<i>me</i>t</b>
 </div>
<script type="text/javascript">
function getNodeText (item) {
 value = "";
 var length = item.childNodes.length;
 for (var i = 0; i < length; i++) {
  var node = item.childNodes[i];
  if (node.nodeType != 8) {
   value += node.nodeType != 1 ? node.nodeValue : getNodeText(node);
  }
 }
 return value;
}

var words = getNodeText(document.getElementById('content'));
      //или getNodeText(document.getElementsByTagName('body')[0]); для всего тега body
words = words.replace (/<\/?[^>]+(>|$)/g, ""); //Удалить теги
var wordsarr=words.split(/\s+/); //Разбить по пробельному разделителю
wordsarr = wordsarr.filter(function(n) { return n != undefined && n != ''}); //Отфильтровать пустые элементы

var count = wordsarr.length; //Найти количество слов

//Разобрать массив по нужному формату и показать в окне диалога
var result = '';
wordsarr.forEach (
 function (item, i, arr) { result += i + ': "' + item + '"' + "\n"; }
);
result += 'Count=' + count;
alert (result);

</script></body></html>

Пример можно запустить, сохранив листинг как файл типа .html. Требуется Javascript 1.6 и выше, в частности, для того, чтобы работал метод filter.


теги: javascript список

комментарии (0)

12.04.2017, 22:58; рейтинг: 1068

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход