Вы слишком усложняете ситуацию, используя forEach
для циклического перебора объектов, а затем перебирая все ключи object
, чтобы проверить, является ли это одним из искомых свойств и содержит ли его значение искомый query
строка.
Кстати, ваша функция ничего не возвращала, потому что вы только пытались заполнить массив results
, не возвращая его.
Решение:
Вы можете просто использовать Array#filter()
метод для фильтрации массива websites
, где вы перебираете массив свойств searchIn
с Array#some()
method и проверьте для каждого object
относительных свойств и содержит ли их значения искомую строку query
.
Вот как должен быть ваш код:
const searchIn = ["code", "link", "offline", "online"];
search: (query) => {
query = query.toLowerCase()
websites.filter(o => searchIn.some(k => o[k] && typeof o[k] === "string" && o[k].toLowerCase().indexOf(query) > -1));
}