出现错误.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>
)
}
答案 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);