检查React Native中的数组是否为空

Pro*_*z1g 11 javascript reactjs react-native

如何使用IF语句检查数组是否为空?

我有这个数组'acessos'是空的

...
constructor(props){
    super(props);
    this.state = {
      acessos:[]
    };
  }
...
Run Code Online (Sandbox Code Playgroud)

然后我试图检查'acessos'是否为空,如果是,我在其中推送一些数据.我已尝试使用null但没有结果,那么如何检查是否为空?

...
if(this.state.acessos === null){
      this.state.acessos.push({'uuid': beacons.uuid, 'date':date});
      this.setState({acessos: this.state.acessos});
} else {
...
Run Code Online (Sandbox Code Playgroud)

ati*_*tel 25

我同意朱利安.您也不必将其与null进行比较.你可以这样写

this.state.acessos && this.state.acessos.length > 0
Run Code Online (Sandbox Code Playgroud)


oma*_*oma 13

只需检查数组是否存在并具有长度即可:

if (this.state.acessos && this.state.acessos.length) {
     //your code here
}
Run Code Online (Sandbox Code Playgroud)

无需检查this.state.acessos.length > 00无论如何都是虚假的,对性能的改进很小。

您可以在此处找到关于'array.length'与'array.length> 0'的性能测试:https : //jsperf.com/test-of-array-length


小智 6

如果在 React JSX 中检查数组长度作为条件渲染的一部分,请记住,如果长度检查时条件为假,它将渲染 0,如下例所示:

{myArray && myArray.length && (
      <div className="myclass">
        Hello
      </div>
    )}
Run Code Online (Sandbox Code Playgroud)

大多数时候这不是我们想要的。相反,您可以按如下方式修改 JSX:

{myArray && myArray.length? (
      <div className="myclass">
        Hello
      </div>
    ):""}
Run Code Online (Sandbox Code Playgroud)


Phi*_*ohn 5

自 ECMAScript 5.1 以来,您甚至不需要检查长度。您可以简单地编写相同的条件,如下所示。

this.state.acessos && this.state.acessos.length
Run Code Online (Sandbox Code Playgroud)

默认情况下this.state.acessos.length检查长度是否未定义或为空或零。