如何在reactjs中使对象长度中的未定义项目等于0?

时间:2016-06-21 15:17:34

标签: javascript json reactjs

我正在尝试跟踪每篇文章中的分数并显示它。但是,当它丢失对象中的向上或向下项目时,我遇到了问题。

这是我所有投票的数据:

const votes = {
  "1": {
    "up": [
      "12345",
      "12346"
    ],
    "down": [
      "22456"
    ],
  },
  "2": {
    "up": [
      "12345",
      "12346"
    ],
    "down": [
      "22456",
      "25214",
      "23612"
    ]
  }
}

export default votes;

这就是我现在正在处理它的方式,但这要求对象中必须同时包含"up""down"

<div style={vote}>
    {votes[id] ? votes[id].up.length - votes[id].down.length : 0 }
</div>

所以在这种情况下你只有 up元素,我希望结果只是up的长度。同样的情况下来:

"3": {
   "up": [
      "12345",
      "22341"
   ]
} //this would output a score of 2

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:5)

当您将对象添加到up数组时,优选的解决方案可能是始终使用空白downvotes数组初始化对象。

如果无法做到这一点,则必须在渲染过程中处理此情况,例如:像这样:

<div style={vote}>
    {votes[id] ? (votes[id].up || []).length - (votes[id].down || []).length : 0 }
</div>