MST

星途 面试题库

面试题:JavaScript中数组长度兼容性问题之基础考察

在JavaScript中,不同浏览器对于数组长度的获取和设置在一些特殊场景下可能存在兼容性问题。请举例说明一种可能出现兼容性问题的场景,并阐述如何解决该问题。
38.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

兼容性问题场景举例

在IE8及以下浏览器中,当访问一个已删除元素的数组时,获取数组长度可能出现问题。例如:

var arr = [1, 2, 3];
delete arr[1];
console.log(arr.length); 
// 在现代浏览器中,数组长度仍为3,而在IE8及以下可能返回2

解决方法

  1. 使用Object.keys()方法:可以通过Object.keys()获取数组的所有可枚举属性,然后计算其长度。
var arr = [1, 2, 3];
delete arr[1];
var len = Object.keys(arr).length;
console.log(len); 
// 现代浏览器和IE8及以上均返回2
  1. 手动遍历计数:手动遍历数组,统计实际存在的元素个数。
var arr = [1, 2, 3];
delete arr[1];
var count = 0;
for(var i = 0; i < arr.length; i++){
    if(arr.hasOwnProperty(i)){
        count++;
    }
}
console.log(count); 
// 现代浏览器和IE8及以上均返回2