下面定义的几个数组哪一个是稀疏数组?
let arr = [,,,];
let arr1 = new Array(3);
let arr2 = [undefined,undefined,undefined];
let arr3 = new Array();
arr3.length = 3;
用什么方法来检测呢?
in操作符?for-in?还是别的什么
下面定义的几个数组哪一个是稀疏数组?
let arr = [,,,];
let arr1 = new Array(3);
let arr2 = [undefined,undefined,undefined];
let arr3 = new Array();
arr3.length = 3;
用什么方法来检测呢?
in操作符?for-in?还是别的什么
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
从定义来看,稀疏数组就是没有从0开始的连续的index。
所以检测方式可以是,
index in array
,是否从0
到array.length - 1
这个表达式都返回true
,如果不是,则表示为稀疏数组。也可以通过
forEach
来判断:那么什么样会有稀疏数组?
有没有被赋值的项,或者
有被删除(delete)的项
例如:
注意,虽然arr2,arr3和arr5,arr6看起来都是undefined,但是其实不一样。arr5和arr6都是显式初始化(赋值)每个元素为undefined。浏览器中是区分了未初始化和初始化的:
未初始化的undefined显示的是
undefined X ?