MST

星途 面试题库

面试题:JavaScript 数组长度边界与稀疏数组处理

给定一个稀疏数组 `let sparseArr = []; sparseArr[10] = 'value';`,阐述这个稀疏数组的长度特性以及在对其进行遍历、增加元素等操作时,数组长度会在哪些边界情况下发生怎样的变化,编写代码验证你的阐述。
36.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 长度特性
    • 该稀疏数组 sparseArr 的长度为 11。因为虽然只在索引 10 处赋值,但JavaScript数组长度是由最大索引值加1决定的。
  2. 操作与长度变化
    • 遍历:在遍历稀疏数组时,使用普通的 for 循环遍历 sparseArr.length,会遍历到从 010 的位置,即使中间位置没有实际值。而使用 for...in 循环只会遍历有值的位置(即索引 10)。
    • 增加元素
      • 在已有最大索引之后增加元素:如果在索引 10 之后增加元素,比如 sparseArr[11] = 'newValue';,数组长度会增加为 12
      • 在已有索引范围内增加元素:如果在已有索引范围内增加元素,比如 sparseArr[5] = 'anotherValue';,数组长度不会改变,仍然是 11
  3. 代码验证
let sparseArr = [];
sparseArr[10] = 'value';
// 验证长度
console.log(`初始数组长度: ${sparseArr.length}`);

// 遍历
console.log('普通for循环遍历:');
for (let i = 0; i < sparseArr.length; i++) {
    console.log(`索引 ${i}: ${sparseArr[i]}`);
}

console.log('for...in循环遍历:');
for (let key in sparseArr) {
    console.log(`索引 ${key}: ${sparseArr[key]}`);
}

// 在已有最大索引之后增加元素
sparseArr[11] = 'newValue';
console.log(`在索引11增加元素后数组长度: ${sparseArr.length}`);

// 在已有索引范围内增加元素
sparseArr[5] = 'anotherValue';
console.log(`在索引5增加元素后数组长度: ${sparseArr.length}`);