т.к. нам надо соответствие по всем вводимым символам, вне зависимости от их порядка, нужно разбить вводимые символы в массив.
дальше нужно найти строки, в которых есть все символы введенного значения.
То есть для каждого введенного символа нужно проверить, содержит ли его строка.
Что-то вроде этого:
const arr = ['Hello', 'World', 'John Doe', 'Hakuna Matata', 'Mosakusa'];
let input = 'da'
let arrInput = input.split(''); // ['d', 'a']
arr.filter(str => arrInput.every(char => str.includes(char))); // []
input = 'ao', arrInput = input.split('');
arr.filter(str => arrInput.every(char => str.includes(char))); // ['Mosakusa']
Прошу заметить, что это не самое оптимальное решение в плане оптимизации. Очень вероятно, что можно сделать лучше