Skip to content

前端经典问题

Triabin

283字小于1分钟

2024-07-26

前端经典问题题解

作用

  • 常见经典的前端问题解决方案

1、判断稀疏数组

  • 概念:即数组中又空槽位,例const arr = [1,,,2, 3, 4,,,];,该数组在控制台打印结果为[ 1, <2 empty items>, 2, 3, 4, <3 empty items> ],即如果对应位置的值为undefined,则数组不是稀疏数组。

注意:

  1. 空槽位索引值读取结果为undefined,但是索引上值为undefined时,不是空槽位;
  2. 不能通过长度判断,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;
    };