Дополню ответ...
Если изменить функцию:
filtredInput() {
let items = json
setTimeout(() => {
if (this.state.search.length !== 0) {
items = items.filter(word =>
word.name.toLocaleLowerCase().indexOf(this.state.search.toLocaleLowerCase()) !== -1
)
}
if (this.state.filters.length !== 0) {
items = items.filter(element => this.state.filters.every(key => element[key]));
}
this.setState( {items} )
}, 1000);
}
То всё работает как нужно, только с задержкой. Дело таки в том, что функция выполняется до установки стейта. Пока нет идей как это пофиксить.