我有一个函数getKey(index),可以在特定的索引处获得一个数据数组的键。然而,这首先需要进行过滤,使用一个名为byAuthor的函数。然而,当我尝试将这个函数与getKey结合使用时,它并没有按照我的期望工作。这可能是某种逻辑错误,但我真的不知道如何得到想要的结果。
getKey = (index) => {
offersRef.on('value', snapshot => {
let data = snapshot.val();
if (data) {
let fullData = _.filter(Object.entries(data).map(([key, value]) => {
return byAuthor(value, firebase.auth().currentUser.uid)
}))
this.setState({ fullData })
}
console.log('the key is' + Object.keys(this.state.fullData)[index])
})
}
这个函数应该记录对象的键,如下图所示。然而,它记录的是0。显然this.state.fullData=0,1,2,3。这个项目的截止日期很快就到了,所以如果有人能帮助我,那就太好了。谢谢!
编辑:我又测试了一下,如果我添加了 console.log(Object.keys(data))
它能打印出我要找的键。但是一旦我用fullData运行它,键就变成了0, 1, 2, 3。
FullData是一个数组,所以 Object.keys(this.state.fullData)[index]
将永远返回指数。你希望得到什么?