为什么这会返回错误.contains()不是函数

时间:2018-09-19 16:46:17

标签: javascript reactjs google-maps frontend

出现错误.contains()不是函数。完整代码为here,可能粘贴太多,因此这里是相关的位。位置和查询是全局设置的,然后在组件中设置状态。

* edit,o是单个位置,json文件中有5个标题和长/纬度

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 :(得分:2)

位置似乎是JSON中的一个简单Javascript对象。您在寻找特定的钥匙吗?如果是这样,我会选择o => o[this.state.query]。如果您要查找标题匹配项,那么我会选择o => o.title.contains(this.state.query),甚至更好,请使用o => o.title.toLowerCase().contains(this.state.query.toLowerCase())

使其不区分大小写

答案 1 :(得分:1)

您正在对位置对象调用contains。您是否要检查标题是否包含查询字符串?

改为尝试o.title.includes(this.state.query)

contains似乎是deprecated。您应该改用includes

答案 2 :(得分:1)

您要在Obj not和array上调用数组方法

答案 3 :(得分:1)

您需要检查对象的确切属性。包含仅适用于字符串或简单数组,不适用于对象数组。应该尝试像object.searchingProperty.Constains(searchingText);