My smartphone's phonebook
JavaScript (ES6), 102 bytes
Expects (book)(digits), where book is an array of strings and digits is an array of integers. Returns an array of strings.

b=&gt;a=&gt;b.filter(s=&gt;eval(`/\\b[${a.map(i=&gt;i+&quot;01adgjmptw&quot;[i]+&quot;-&quot;+&quot;01cfilosvz&quot;[i]).join`][`}]/i`).test(s))

Try it online!
How?
The sequence of digits is turned into a regular expression of the form:
/\b[Dx-y][Dx-y]...[Dx-y]/i

where D is the original digit and x-y is the letter range associated to it, or D-D for 0 or 1.
For instance, [2,7] becomes /\b[2a-c][7p-s]/i.
We walk through the phone book and keep only the names that are matched by this regular expression.
Commented
b =&gt; a =&gt;             // b[] = book, a[] = integer sequence
b.filter(s =&gt;         // for each string s in b[]:
  eval(               //   evaluate as JS code:
    &quot;/\\b&quot; +          //     regexp delimiter, followed by \b
    &quot;[&quot; +             //     followed by the first '['
    a.map(i =&gt;        //     for each integer i in a[]:
      i +             //       append i
      &quot;01adgjmptw&quot;[i] //       append the first range character
      + &quot;-&quot; +         //       append a '-'
      &quot;01cfilosvz&quot;[i] //       append the second range character
    ).join`][` +      //     end of map(); join with ']['
    &quot;]/i&quot;             //     append the last ']' and '/i'
  )                   //   end of eval()
  .test(s)            //   keep s if it's matching the above regular expression
)                     // end of filter()