面试题答案
一键面试合并数组
可以使用 concat
方法或扩展运算符(spread operator)来合并数组。
- 使用
concat
方法
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let newArr = arr1.concat(arr2);
console.log(newArr);
原理:concat
方法用于合并两个或多个数组。它不会更改现有数组,而是返回一个新数组。它会将作为参数传递的数组中的元素依次添加到调用该方法的数组的副本末尾。
- 使用扩展运算符
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let newArr = [...arr1, ...arr2];
console.log(newArr);
原理:扩展运算符将数组展开为一个个独立的元素。在创建新数组时,它把 arr1
和 arr2
的所有元素逐个放入新数组中,从而实现合并。
合并对象
可以使用 Object.assign
方法或扩展运算符来合并对象。
- 使用
Object.assign
方法
let obj1 = {a: 1, b: 2};
let obj2 = {c: 3, d: 4};
let newObj = Object.assign({}, obj1, obj2);
console.log(newObj);
原理:Object.assign
方法用于将所有可枚举自有属性的值从一个或多个源对象复制到目标对象。它返回目标对象。第一个参数是目标对象,后面的参数是源对象。这里先创建了一个空对象作为目标对象,然后依次将 obj1
和 obj2
的属性复制到空对象中。如果有相同的属性名,后面源对象的属性会覆盖前面源对象的属性。
- 使用扩展运算符
let obj1 = {a: 1, b: 2};
let obj2 = {c: 3, d: 4};
let newObj = {...obj1, ...obj2};
console.log(newObj);
原理:扩展运算符在对象中的使用,会将对象的属性展开。它会先展开 obj1
的所有属性,再展开 obj2
的所有属性,新对象会包含来自 obj1
和 obj2
的所有属性,如果有相同的属性名,后面的 obj2
的属性会覆盖前面 obj1
的属性。