Jak*_*par 5 javascript filter firebase reactjs firebase-realtime-database
我正在尝试按属性过滤对象,但无法正常工作。
对象中的数据的结构如下:
我通过UID获取数据,然后从该对象映射所有项目,但无法使过滤器正常工作。
渲染方法如下所示:
render() {
return(
<div>
{Object.keys(this.state.dataGoal)
.filter(key => key.main == true)
.map( (key, index) => {
return <div key={key}>
<h1>{this.state.dataGoal[key].name}</h1>
<p>{this.state.dataGoal[key].main}</p>
</div>
})}
</div>Run Code Online (Sandbox Code Playgroud)
有什么想法我做错了吗?
感谢您的帮助,雅库布
假设这this.state.dataGoal是来自已发布目标数组的对象,那么您的过滤器是错误的。应该:
{Object.keys(this.state.dataGoal)
.filter(key => this.state.dataGoal[key].main === true)
.map((key, index) => {
return <div key={key}>
<h1>{this.state.dataGoal[key].name}</h1>
<p>{this.state.dataGoal[key].main}</p>
</div>
})}
Run Code Online (Sandbox Code Playgroud)
请注意,现在这是.filter(key => this.state.dataGoal[key].main === true)因为 key 是字符串,类似于Khasdfasdfasdfasdfads您希望goal通过此键访问object 以检查其main属性。
Object.keys返回keys该对象的 ,这意味着它返回一个包含该对象中每个键的字符串数组。
obj = { 'a': 1, 'b': 2 };
Object.keys(obj); // ['a', 'b']
Run Code Online (Sandbox Code Playgroud)
因此,要访问该属性的值,您必须使用该键来访问它,在您的情况下,它会是这样的:
filter(key => this.state.dataGoal[key].main == true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11346 次 |
| 最近记录: |