JavaScript数组空位的处理

335 阅读1分钟
let array = [,1,,2,,3];
array = array.map((i)=>++i);

执行后array是什么? 如果你认为结果是 [NaN,2,NaN,3,NaN,4] 那么你就需要继续往下看了。

ES5中:

  • 在大多数情况下会忽略空位,例如forEach、for in、filter、every、reduce、some都会跳过空位。
  • map也像上面那些方法一样,会跳过空位,但是会保留这个值,join和toString会将空位与undefined以及null处理成空字符串。 ES6中:
  • 例如 Array.form() 方法会讲数组的空位转为 undefined。
  • 扩展运算符也会将空位转为 undefined。
  • copyWithin() 会连同空位一起拷贝。
  • for of 循环也会遍历空位并将值作为 undefined。
  • includes()、entries()、keys()、values()、find() 和 findIndex() 等会将空位处理成 undefined。

所以显而易见,答案是[,2,,3,,4]