После запуска кода эта ссылка 'https://swapi.co/api/people/1' возвращает один объект (Люк Скайуокер).Вы не можете использовать .filter () для объекта, он предназначен для массивов данных.
{name: "Luke Skywalker", height: "172", mass: "77", hair_color: "blond", skin_color: "fair", …}
Когда я изменяю URL 'https://swapi.co/api/people/' и удаляю 1, я получаю объект сдругой массив объектов внутри results
.
Я предполагаю, что вы хотите найти список джедаев.Если вы хотите, чтобы список был возвращен в API, вы должны углубиться в этот объект внутри результатов.Поэтому вам нужно реорганизовать вашу выборку следующим образом:
.then(people => this.setState({ jedi:people.results }))
Это возвращает 10 объектов внутри массива.
Как только у вас есть массив этих объектов, вы можете использовать библиотеку lodash
отфильтровать.npm i lodash
и укажите его как import _ from 'lodash'
.
Тогда в вашем рендере сразу после деструктуры вы можете запустить следующий фильтр.
const filtered = _.filter(jedi, (item) => {
return item.name.indexOf(searchfield) > -1
})
console.log(filtered)
Я предполагаю, что после этого вы будетевозвращая список отфильтрованных джедаев в пользовательский интерфейс
Я жестко запрограммировал «Люк» в своем состоянии поля поиска, и он успешно возвратил 1 джедая