下面定义的几个数组哪一个是稀疏数组?
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?还是别的什么
9 回答9.4k 阅读
6 回答5.1k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10k 阅读
5 回答7.4k 阅读✓ 已解决
5 回答8.3k 阅读
从定义来看,稀疏数组就是没有从0开始的连续的index。
所以检测方式可以是,
index in array
,是否从0
到array.length - 1
这个表达式都返回true
,如果不是,则表示为稀疏数组。也可以通过
forEach
来判断:那么什么样会有稀疏数组?
有没有被赋值的项,或者
有被删除(delete)的项
例如:
注意,虽然arr2,arr3和arr5,arr6看起来都是undefined,但是其实不一样。arr5和arr6都是显式初始化(赋值)每个元素为undefined。浏览器中是区分了未初始化和初始化的:
未初始化的undefined显示的是
undefined X ?