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));