MST

星途 面试题库

面试题:JavaScript类数组对象在函数调用中的优化处理

假设你有一个函数,它接受不定数量的参数,这些参数以类数组对象(如arguments)的形式存在。由于性能原因,你需要对这些参数进行优化处理。请描述你会采取哪些策略来优化对这个类数组对象的操作,比如如何高效地遍历、筛选或修改这些参数,并给出具体的代码示例。
17.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

优化策略

  1. 转换为数组:由于类数组对象(如arguments)没有数组的所有方法,将其转换为真正的数组可以使用数组的高效方法。可以使用Array.from() 或扩展运算符 ... 进行转换。
  2. 高效遍历:使用for...of循环遍历数组,相比传统for循环,for...of语法更简洁,且在遍历可迭代对象时性能较好。
  3. 筛选参数:使用filter()方法,它会创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
  4. 修改参数:使用map()方法,它会创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

代码示例

function optimizeArgs() {
    // 将arguments转换为数组
    const argsArray = Array.from(arguments);
    // 或者使用扩展运算符
    // const argsArray = [...arguments];

    // 高效遍历
    for (const arg of argsArray) {
        console.log(arg);
    }

    // 筛选参数
    const filteredArgs = argsArray.filter(arg => typeof arg === 'number');

    // 修改参数
    const modifiedArgs = argsArray.map(arg => {
        if (typeof arg ==='string') {
            return arg.toUpperCase();
        }
        return arg;
    });

    return {
        filteredArgs,
        modifiedArgs
    };
}

// 调用函数并传入不定数量参数
const result = optimizeArgs(1, 'hello', 2, 'world');
console.log(result.filteredArgs); 
console.log(result.modifiedArgs);