Search + debounce
by Vladymyr Shevchuk
JavaScript
const arr = [{name: 'asfoo'}, {name: 'foo'}, {name: 'for'}, {name: 'fortt'}];
const $input = document.getElementById('search');
const debounce = (f, ms) => {
let timer = null;
return (...args) => {
const onComplete = () => {
f.apply(this, args);
timer = null;
}
if (timer) clearTimeout(timer);
timer = setTimeout(onComplete, ms);
};
}
$input.addEventListener('input', debounce(event => {
const {target} = event;
const {value} = target;
const result = arr.filter(item => item.name.match(value));
console.error('result', result);
}, 500));