Fuzzy Search using Fuse.js

by Alen Subasic

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.4.4/fuse.min.js"></script>
<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
    integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

  <title>Hello, world!</title>

  <style>
    h1 {
      padding-top: 50px;
    }
    #searchResults {margin-top: 15px;}
  </style>
</head>

<body>

  <div class="container">
    <h1>Search</h1>
    <input type="text" class="form-control" id="search" placeholder="Search by name or portal, link...">
    <pre id="searchResults" class="well"><code></code></pre>
  </div>
</body>

</html>

JavaScript

var data = [
  {
      title: "Old Man's War",
      author: {
        firstName: "John",
        lastName: "Scalzi"
      }
  },
  {
      title: "The Lock Artist",
      author: {
        firstName: "Steve",
        lastName: "Hamilton"
      }
  },
  {
      title: "HTML5",
      author: {
        firstName: "Remy",
        lastName: "Sharp"
      }
  },
  {
      title: "Right Ho Jeeves",
      author: {
        firstName: "P.D",
        lastName: "Woodhouse"
      }
  },
  {
      title: "The Code of the Wooster",
      author: {
        firstName: "P.D",
        lastName: "Woodhouse"
      }
  },
  {
      title: "Thank You Jeeves",
      author: {
        firstName: "P.D",
        lastName: "Woodhouse"
      }
  },
  {
      title: "The DaVinci Code",
      author: {
        firstName: "Dan",
        lastName: "Brown"
      }
  },
  {
      title: "Angels & Demons",
      author: {
        firstName: "Dan",
        lastName: "Brown"
      }
  },
  {
      title: "The Silmarillion",
      author: {
        firstName: "J.R.R",
        lastName: "Tolkien"
      }
  },
  {
      title: "Syrup",
      author: {
        firstName: "Max",
        lastName: "Barry"
      }
  },
  {
      title: "The Lost Symbol",
      author: {
        firstName: "Dan",
        lastName: "Brown"
      }
  },
  {
      title: "The Book of Lies",
      author: {
        firstName: "Brad",
        lastName: "Meltzer"
      }
  },
  {
      title: "Lamb",
      author: {
        firstName: "Christopher",
        lastName: "Moore"
      }
  },
  {
      title: "Fool",
      author: {
        firstName: "Christopher",
        lastName: "Moore"
      }
  },
  {
      title: "Incompetence",
      author: {
        firstName: "Rob",
        lastName: "Grant"
      }
  },
  {
      title: "Fat",
      author: {
        firstName: "Rob",
        lastName: "Grant"
      }
  },
  {
      title: "Colony",
      author: {
        firstName: "Rob",
        lastName: "Grant"
      }
  },
  {
    ...