MST
星途 面试题库

面试题:JavaScript函数实参与形参的复杂优化场景

编写一个JavaScript函数 `combineData`,它接受任意数量的实参。这些实参可能是数组、对象或基本数据类型。函数需要将所有数组的元素合并成一个新数组,将所有对象的属性合并成一个新对象,基本数据类型忽略。请考虑如何优化函数以高效处理大量不同类型的实参。
11.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function combineData(...args) {
    let combinedArray = [];
    let combinedObject = {};

    for (let arg of args) {
        if (Array.isArray(arg)) {
            combinedArray = [...combinedArray, ...arg];
        } else if (typeof arg === 'object' && arg!== null) {
            combinedObject = {...combinedObject, ...arg };
        }
    }

    return {
        array: combinedArray,
        object: combinedObject
    };
}

上述代码实现了 combineData 函数,它会将传入的数组元素合并到一个新数组,对象属性合并到一个新对象,并忽略基本数据类型。

优化思路:

  1. 减少中间变量:代码尽量简洁,直接在遍历中进行合并操作,减少不必要的中间变量声明。
  2. 使用展开运算符:在数组和对象合并时,使用展开运算符 ...,这种方式在性能和代码简洁性上都有不错的表现。
  3. 类型判断优化:在遍历实参时,通过 typeofArray.isArray 等方法快速判断数据类型,对于不符合要求的基本数据类型直接跳过,避免无效操作。