MST

星途 面试题库

面试题:JavaScript 数组创建兼容性与类型转换问题

假设要在IE8及以上浏览器和现代浏览器中都能正确创建一个包含特定数值类型元素的数组,并且需要考虑数值类型转换的兼容性。例如将字符串数组 `['1', '2', '3']` 转换为数值数组 `[1, 2, 3]`,请写出在不同浏览器环境下都能稳定运行的代码,并解释其中涉及的兼容性处理逻辑。
21.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
<!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>

兼容性处理逻辑

  1. 现代浏览器:现代浏览器支持 Array.prototype.map 方法,通过 map 方法遍历字符串数组,对每个元素使用 Number 函数进行类型转换,将字符串转换为数值,并返回新的数值数组。
  2. IE8及以上(也适用于不支持map的旧浏览器):IE8虽然支持 map,但为了演示兼容性处理。当检测到 Array.prototype.map 不存在时(在不支持的旧浏览器中),使用传统的 for 循环遍历字符串数组,对每个元素使用 Number 函数进行类型转换,并将转换后的数值逐个添加到新数组 numArray 中。这样可以确保在不同浏览器环境下都能稳定地将字符串数组转换为数值数组。