MST

星途 面试题库

面试题:JavaScript 数组与对象基本操作之合并问题

假设有两个数组,`let arr1 = [1, 2, 3];` 和 `let arr2 = [4, 5, 6];`,以及两个对象,`let obj1 = {a: 1, b: 2};` 和 `let obj2 = {c: 3, d: 4};`。请分别使用JavaScript的方法将这两个数组合并为一个新数组,将两个对象合并为一个新对象,并描述你所使用方法的原理。
35.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

合并数组

可以使用 concat 方法或扩展运算符(spread operator)来合并数组。

  1. 使用 concat 方法
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let newArr = arr1.concat(arr2);
console.log(newArr); 

原理:concat 方法用于合并两个或多个数组。它不会更改现有数组,而是返回一个新数组。它会将作为参数传递的数组中的元素依次添加到调用该方法的数组的副本末尾。

  1. 使用扩展运算符
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let newArr = [...arr1, ...arr2];
console.log(newArr); 

原理:扩展运算符将数组展开为一个个独立的元素。在创建新数组时,它把 arr1arr2 的所有元素逐个放入新数组中,从而实现合并。

合并对象

可以使用 Object.assign 方法或扩展运算符来合并对象。

  1. 使用 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 方法用于将所有可枚举自有属性的值从一个或多个源对象复制到目标对象。它返回目标对象。第一个参数是目标对象,后面的参数是源对象。这里先创建了一个空对象作为目标对象,然后依次将 obj1obj2 的属性复制到空对象中。如果有相同的属性名,后面源对象的属性会覆盖前面源对象的属性。

  1. 使用扩展运算符
let obj1 = {a: 1, b: 2};
let obj2 = {c: 3, d: 4};
let newObj = {...obj1, ...obj2};
console.log(newObj); 

原理:扩展运算符在对象中的使用,会将对象的属性展开。它会先展开 obj1 的所有属性,再展开 obj2 的所有属性,新对象会包含来自 obj1obj2 的所有属性,如果有相同的属性名,后面的 obj2 的属性会覆盖前面 obj1 的属性。