javascript中创建空数组的正确姿势

使用以下方式来创建包含空值的数据

1、Array.apply(null,{length:10});
2、Array.from({length:10});
3、[...Array(10)]


不要使用 new Array(10) 来创建,这种方式会造成稀疏数组。


稀疏数组存在es5和es6下均存在问题:


es5:


  1. forEach(), filter(), reduce(), every() 和 some() 都会跳过空位。
  2. map() 会跳过空位,但会保留这个值
  3. join() 和 toString() 会将空位视为 undefined,而 undefined 和 null 会被处理成空字符串。

es6:


  1. Array.from 方法会将数组的空位,转为 undefined。
  2. 扩展运算符(...)也会将空位转为 undefined。
  3. copyWithin() 会连空位一起拷贝。
  4. fill() 会将空位视为正常的数组位置。
  5. for...of 循环也会遍历空位。
  6. entries()、keys()、values()、find()和 findIndex() 会将空位处理成 undefined。



参考: https://juejin.im/post/5b14cc5de51d45069773a4a9


确认 取消
2条评论
2额e