面试题答案
一键面试兼容性问题场景举例
在IE8及以下浏览器中,当访问一个已删除元素的数组时,获取数组长度可能出现问题。例如:
var arr = [1, 2, 3];
delete arr[1];
console.log(arr.length);
// 在现代浏览器中,数组长度仍为3,而在IE8及以下可能返回2
解决方法
- 使用
Object.keys()
方法:可以通过Object.keys()
获取数组的所有可枚举属性,然后计算其长度。
var arr = [1, 2, 3];
delete arr[1];
var len = Object.keys(arr).length;
console.log(len);
// 现代浏览器和IE8及以上均返回2
- 手动遍历计数:手动遍历数组,统计实际存在的元素个数。
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