外观
前端经典问题
前端经典问题题解
作用
- 常见经典的前端问题解决方案
1、判断稀疏数组
- 概念:即数组中又空槽位,例
const arr = [1,,,2, 3, 4,,,];
,该数组在控制台打印结果为[ 1, <2 empty items>, 2, 3, 4, <3 empty items> ]
,,即如果对应位置的值为undefined,则数组不是稀疏数组。
注意:
- 空槽位索引值读取结果为undefined,但是索引上值为undefined时,不是空槽位;
- 不能通过长度判断,
arr.length
不一定就不等于Object.keys(arr).length
,因为可以给数组对象arr添加任意属性,从而影响``Object.keys()`函数的结果。
解决方案:
const isSparseArray = (arr) => { if (!Array.isArray(arr)) { throw new Error('arr must be an Array!'); } for (let i = 0; i < arr.length; i++) { if (!arr.hasOwnProperty(i)) { // 不能使用 arr[i] === undefined 进行判断,使用hasOwnProperty函数判断下标是否存在 return true; } } return false; };