javascript - 将 Firebase 元素映射为数组

标签 javascript arrays reactjs

我正在开发一个台球投注应用程序。一切看起来都不错,我正在完成最后一个模块。

在 firebase 中,我有一池赌注,有很多用户。任何用户都有很多场比赛,他们对比赛进行投注。像这样:

enter image description here

当我像这样在 firebase 上发出请求时:

 fetchPoolData = async () => {
    const { firebaseApp } = this.props;

    await firebaseApp
      .database()
      .ref(`/pools/${this.props.location.state.pool.key}/users`)
      .once("value")
      .then(snapshot => {
        this.setState({
          poolData: this.snapshotToArray(snapshot),
          isLoadingPool: false
        });
      });
  };

一切看起来都很棒。现在我有一组用户,并且想要进行一些计算以获得每个用户在每场比赛中的得分。所以我像这样映射用户:

this.props.poolData.map(user => {
  allUserMatches.push(calculatePoints(user.matches, outcomeMatches));
});

这里的问题是 user.matches 没有作为数组检索。相反,它就像一个大的 json 对象,我可以映射它并进行数学计算来计算点。

enter image description here

如何映射这个元素?如果我执行 Object.keys,我只会得到一个像这样的对象:

Object.keys(user.matches)
(66) ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "result", "topscorer"

如果我执行 Object.entries,它仍然不是很有用(因为我需要对数组的对象进行查找,以获取按对象属性过滤的元素)。

Object.entries(user.matches)
(66) [Array(2), Array(2), Array(2), Array(2)

我在这里迷路了。该怎么办?

最佳答案

如果你想使用这样的映射,你可以使用

Object.keys(user.matches).map(key => user.matches[key])

上面将从每个对象返回键,稍后可以通过它们的键在对象映射中使用这些键。 此外,它不会以数组形式返回,因为您有两个野生属性(结果和topscorer),它们不像数组索引那样工作,因此需要将它们作为对象而不是数组返回

一种从该键值对中检索没有结果和最高得分者的所有值的方法

Object.keys(user.matches).filter(key => Number.isInteger(parseInt(key))).map(key => user.matches[key]). 

关于javascript - 将 Firebase 元素映射为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696789/

相关文章:

java - 如何以数字0退出循环?但现在我有其他问题

javascript - axios 请求完成后,如何渲染 react 组件,我能够获取数据,但它显示 null 两次,然后显示数据

javascript - 通过 React 路由器重新加载相同路由后的 API 调用

javascript - React.JS中独立组件之间如何通信?

javascript - 如何在 RXJS 中实现带背压的轮询

javascript - 当用户在 HTML 选择中选择当前选项时是否可以触发 JavaScript?

c - 如何生成新的随机数并转置矩阵?

c - 二维字符数组出现问题,程序无法打印

javascript - 只有 Internet Explorer 给出错误 : 'document.getElementById(...)' is null or not an object

javascript - 当窗口大小改变时保持 viewBox 的比例