javascript - 在javascript中映射之前是否需要检查数组的长度?

标签 javascript arrays arrow-functions

所以我用 ES6 编写了这段代码

 let documents = somedata;
      if (documents.length >= 0) {
          documents.map( (item, index) => {
              state[item.type].push(item);
          });
          this.setState({documents: state});
      }

我正在尝试优化它,我是否需要在声明映射之前检查数组的长度,什么是处理错误检查的更好方法?

比如有没有不检查长度的例子是不好的?

如果变量不是数组,它会失败,但除此之外还有什么情况我应该担心吗?

最佳答案

不,[].map(item => item) 只会返回 [],所以如果长度为 0 就没问题。

如果你只是检查你的变量是否是一个数组,你可以引用这个问题: How do you check if a variable is an array in JavaScript?

这也可能由于以下任何原因而失败

  • 您的数组元素之一不是具有“类型”属性的对象
  • 您的状态对象没有与 item.type 值对应的键
  • 如果 state[item.type] 值不是数组(因此没有 push 方法)

此外,如果您不使用 map 的结果,请不要使用 map ,使用 Array.forEach() .

关于javascript - 在javascript中映射之前是否需要检查数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52769487/

相关文章:

c - 我如何知道输入是否是字母?我只能接受姓名中的字母和中间首字母的点

javascript - 传递箭头函数与传递函数

javascript - jquery 可嵌套不更新

javascript - .append() 和 .html() 之间的不同行为

javascript - 一个 CSS 风格的倒数计时器?

javascript - 在 Promise 回调中使用参数时,无法将参数传递给类方法

javascript - 如何将 typescript 类型添加到 ES6 箭头函数?

javascript - 使用记录和来源时出错

arrays - 如何使用vba在逗号之间分割字符串并将每个字符串存储在数组变量中

c - 如何读取大输入 - C 中的 8MB 数据