Почему это возвращает ошибку .contains () не является функцией - PullRequest
0 голосов
/ 19 сентября 2018

получаю ошибку .contains () не является функцией.Полный код здесь , вероятно, слишком много, чтобы вставить сюда, поэтому вот соответствующие биты.Локации задаются глобально, а также запрашиваются, затем устанавливаются состояния в компоненте.

* редактировать, o - это отдельное местоположение, есть 5 заголовков и длинных / длинных из файла json

let locationslist = this.state.locations
.filter(o => o.contains(this.state.query))
.map(o => <li key={o}
  type="button"
  className="btn"
  id="filterMarker"
  tabIndex="0">{o}</li>)

render() {
return (
<div>
  <div id="filtercontainer">
  <input
    id="filterbar"
    type="text"
    placeholder="Filter"
    onChange={this.handleQueryChange} value={this.state.query} />
    <ul>
    {this.state.locationslist}
    </ul>
  </div>
  <div id="map" />
</div>
)
}

Ответы [ 4 ]

0 голосов
/ 19 сентября 2018

Вам необходимо проверить точное свойство объекта.Contains будет работать только со строками или простым массивом, а не с массивом abject.Должен попробовать как object.searchingProperty.Constains (searchText);

0 голосов
/ 19 сентября 2018

Вы вызываете метод массива в Obj, а не массив

0 голосов
/ 19 сентября 2018

Похоже, локации - это простой объект Javascript из JSON.Вы ищете конкретный ключ?Если это так, я бы пошел с o => o[this.state.query].Если вы ищете совпадение с названием, я бы выбрал o => o.title.contains(this.state.query) или даже лучше, сделав его нечувствительным к регистру с o => o.title.toLowerCase().contains(this.state.query.toLowerCase())

0 голосов
/ 19 сентября 2018

Вы звоните contains на объект вашего местоположения.Вы хотели проверить, содержит ли заголовок строку запроса?

Попробуйте вместо этого o.title.includes(this.state.query).

contains представляется устаревшим .Вы должны использовать includes вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...