如何使用IF语句检查数组是否为空?
我有这个数组'acessos'是空的
...
constructor(props){
super(props);
this.state = {
acessos:[]
};
}
...
然后我试图检查'acessos'是否为空,如果是,我在其中推送一些数据。我尝试使用null但没有结果,那么如何检查是否为空?
...
if(this.state.acessos === null){
this.state.acessos.push({'uuid': beacons.uuid, 'date':date});
this.setState({acessos: this.state.acessos});
} else {
...
答案 0 :(得分:18)
我同意朱利安。您也不必将其与null进行比较。您可以像
一样编写它this.state.acessos && this.state.acessos.length > 0
答案 1 :(得分:6)
只需检查您的数组是否存在并具有长度:
if (this.state.acessos && this.state.acessos.length) {
//your code here
}
无需检查this.state.acessos.length > 0
。 0
反而是虚假的,对性能的改善很小。
您可以在此处找到关于“ array.length”与“ array.length> 0”的性能测试:https://jsperf.com/test-of-array-length
答案 2 :(得分:2)
从ECMAScript 5.1开始,您甚至都不需要检查长度。 您只需编写如下相同的条件即可。
this.state.acessos && this.state.acessos.length
默认情况下,this.state.acessos.length
检查长度是否未定义,为空或为零。
答案 3 :(得分:2)
如果在 React JSX 中检查数组长度作为条件渲染的一部分,请记住,如果在长度检查时条件为假,它将渲染 0,如下例所示:
{myArray && myArray.length && (
<div className="myclass">
Hello
</div>
)}
大多数时候这不是我们想要的。相反,您可以按如下方式修改 JSX:
{myArray && myArray.length? (
<div className="myclass">
Hello
</div>
):""}