面试题答案
一键面试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
函数,它会将传入的数组元素合并到一个新数组,对象属性合并到一个新对象,并忽略基本数据类型。
优化思路:
- 减少中间变量:代码尽量简洁,直接在遍历中进行合并操作,减少不必要的中间变量声明。
- 使用展开运算符:在数组和对象合并时,使用展开运算符
...
,这种方式在性能和代码简洁性上都有不错的表现。 - 类型判断优化:在遍历实参时,通过
typeof
和Array.isArray
等方法快速判断数据类型,对于不符合要求的基本数据类型直接跳过,避免无效操作。