【问题标题】:Why am I not getting the correct result from Object.entries in React Native?为什么我没有从 React Native 中的 Object.entries 获得正确的结果?
【发布时间】:2020-06-13 11:31:13
【问题描述】:

我有一个函数 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])
    })
  }

这个函数应该记录对象的键,如下图所示。 However,它记录了 0。显然 this.state.fullData = 0, 1, 2, 3。这个项目的截止日期很快,所以如果有人能帮助我,那就太好了。谢谢!

编辑:我再次对其进行了测试,如果我添加console.log(Object.keys(data)),它会打印出我正在寻找的密钥。但是一旦我用 fullData 运行它,键就会变成 0、1、2、3。

【问题讨论】:

    标签: javascript arrays react-native react-native-firebase


    【解决方案1】:

    FullData 是一个数组,因此Object.keys(this.state.fullData)[index] 将始终返回索引。你期望得到什么?

    【讨论】:

    • 我希望它在该索引处获取报价的键,例如应该是“-M9gvgkSK_wlYvHjmj7l”。我对 Javascript 或 Firebase 不太熟悉,所以如果我错了,请纠正我,但Object.keys(this.state.fullData) 应该是这些键的数组,而不仅仅是 0、1、2、3。数组的数据结构是这样的每个索引都类似于上图所示的索引,所以我不确定 0、1、2、3 来自哪里。
    • 啊,我想我现在明白了——数组的键是指每个对象的索引。如何让它从 Firebase 返回对象的键?
    • @MeganYap this.state.fullData[index] 我猜,你不需要键,你需要值
    • 但如果我使用this.state.fullData[index]Object.values(this.state.fullData)[index] 它只会返回没有密钥的对象,所以只需作者:...,类别:...等
    • 如果你看一下我的编辑,我已经做了一些测试,它表明当我将 fullData 分配给过滤后的数据版本时,它会用 0、1、2、3 替换键跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2017-10-30
    相关资源
    最近更新 更多