所以我用ES6编写了这段代码
let documents = somedata;
if (documents.length >= 0) {
documents.map( (item, index) => {
state[item.type].push(item);
});
this.setState({documents: state});
}
并且我正在尝试对其进行优化,我是否需要在声明映射之前检查数组的长度,什么是处理错误检查的更好方法?
就像在某些情况下,不检查长度会不好吗?
如果变量不是数组,它将失败,但是除了我应该担心的还有其他情况吗?
答案 0 :(得分:1)
否,[]。map(item => item)只会返回[],因此如果长度为0,就可以了。
如果您只是检查变量是否为数组,则可以参考以下问题: https://medium.com/@mrpowers/how-to-write-spark-etl-processes-df01b0c1bec9
并且由于以下任何原因也可能失败
此外,如果您不使用地图的结果,请不要使用地图,请使用How do you check if a variable is an array in JavaScript?。
答案 1 :(得分:0)
好吧。实际上,您应该检查文档在原型跟踪中是否具有length属性。如果没有,您尝试在其中使用map,它将引发一个错误。
当您保证有长度(可迭代)时,长度可以为零没有问题。因为您没有元素,所以不会迭代任何内容。因此,将返回一个空数组。