面试题答案
一键面试<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数组数值类型转换兼容性</title>
</head>
<body>
<script>
// 字符串数组
var strArray = ['1', '2', '3'];
// 兼容性处理
var numArray;
if (typeof Array.prototype.map === 'function') {
// 现代浏览器
numArray = strArray.map(Number);
} else {
// IE8及以下(实际IE8支持map,但为完整演示兼容性处理)
numArray = [];
for (var i = 0; i < strArray.length; i++) {
numArray.push(Number(strArray[i]));
}
}
console.log(numArray);
</script>
</body>
</html>
兼容性处理逻辑
- 现代浏览器:现代浏览器支持
Array.prototype.map
方法,通过map
方法遍历字符串数组,对每个元素使用Number
函数进行类型转换,将字符串转换为数值,并返回新的数值数组。 - IE8及以上(也适用于不支持map的旧浏览器):IE8虽然支持
map
,但为了演示兼容性处理。当检测到Array.prototype.map
不存在时(在不支持的旧浏览器中),使用传统的for
循环遍历字符串数组,对每个元素使用Number
函数进行类型转换,并将转换后的数值逐个添加到新数组numArray
中。这样可以确保在不同浏览器环境下都能稳定地将字符串数组转换为数值数组。