Справочники, инструменты, документация

JavaScript: Поиск в реальном времени

Очень простой скрипт для поиска, позволяет искать по заранее подготовленному тексту в HTML файле и выводить найденное.
<div id="search"><input type="text"></div>
<div id="searchResults"></div>

<script>
(function () {
 var searchInput = document.querySelector("#search input");
 var searchResults = document.querySelector("#searchResults");
 var arr = [{
  title: "title1",
  descr: "descr5"
 }, {
  title: "title2",
  descr: "Descr con ght"
 }, {
  title: "title3",
  descr: "content"
 }];

 function search(str) {
  str = str.toLowerCase();
  return arr.filter(function (obj) {
   function isExist(val) {
    var title = val.title.toLowerCase();
    var descr = val.descr.toLowerCase();
    return title.replace(str, '') !== title || descr.replace(str, '') !== descr;
   }
   if (isExist(obj)) {
    return obj;
   }
   return false;
  })
 }
 searchInput.addEventListener("keyup", onSearch);

 function onSearch(e) {
  var rez = search(e.target.value);
  searchResults.innerText = "";
  renderResults(rez);
 }

 function renderItemTpl(item) {
  var tplItem = document.createElement('div');
  var tplTitle = document.createElement('h1');
  var tplDescr = document.createElement('p');

  function renderInner() {
   tplTitle.textContent = item.title;
   tplDescr.textContent = item.descr;
   tplItem.appendChild(tplTitle);
   tplItem.appendChild(tplDescr);
   return tplItem;
  }
  return renderInner();
 }

 function renderResults(rez) {
  var len = rez.length;
  if (len > 0) {
   for (var i = 0; i < len; i++) {
    searchResults.appendChild(renderItemTpl(rez[i]));
   }
  }
 }
}());
</script>