前端 JavaScript 基础面试题, JavaScript 中如何合并对象?
前端 JavaScript 基础面试题, JavaScript 中如何合并对象?
QA
Step 1
Q:: JavaScript 中如何合并对象?
A:: 在 JavaScript 中,合并对象的常用方法包括:
1. 使用 Object.assign()
方法:
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = Object.assign({}, obj1, obj2);
// mergedObj => { a: 1, b: 3, c: 4 }
2. 使用扩展运算符 (...)
:
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = { ...obj1, ...obj2 };
// mergedObj => { a: 1, b: 3, c: 4 }
Step 2
Q:: 如何判断一个对象是否为空?
A:: 判断一个对象是否为空的方法包括:
1. 使用 Object.keys()
方法:
const isEmpty = (obj) => Object.keys(obj).length === 0;
2. 使用 JSON.stringify()
方法:
const isEmpty = (obj) => JSON.stringify(obj) === '{}';
Step 3
Q:: 如何深拷贝一个对象?
A:: 深拷贝对象的方法包括:
1. 使用 JSON.parse 和 JSON.
stringify:
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
2.
使用递归函数:
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const copy = Array.isArray(obj) ? [] : {};
for (const key in obj) {
copy[key] = deepCopy(obj[key]);
}
return copy;
}
3. 使用 lodash 的 _.
cloneDeep 方法:
const _ = require('lodash');
const deepCopy = _.cloneDeep(original);
Step 4
Q:: 如何合并两个数组并去重?
A:: 合并两个数组并去重的方法包括:
1.
使用 Set 和扩展运算符:
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const mergedArray = [...new Set([...arr1, ...arr2])];
// mergedArray => [1, 2, 3, 4]
2. 使用 Array.prototype.concat 和 Array.prototype.
filter:
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const mergedArray = arr1.concat(arr2).filter((item, index, self) => self.indexOf(item) === index);
// mergedArray => [1, 2, 3, 4]
Step 5
Q:: 什么是闭包?闭包有哪些实际应用?
A:: 闭包是指在一个函数内部定义的函数可以访问外部函数的变量,即使外部函数已经执行完毕。
闭包的实际应用包括:
1.
创建私有变量:
function createCounter() {
let count = 0;
return function() {
return ++count;
};
}
const counter = createCounter();
counter(); // 1
counter(); // 2
2.
模拟块级作用域:
for (var i = 0; i < 3; i++) {
(function(i) {
setTimeout(function() {
console.log(i);
}, 1000);
})(i);
}
// 输出:0, 1, 2
用途
这些问题涉及 JavaScript 的基础知识,这些知识是前端开发中经常用到的。合并对象、判断对象是否为空、深拷贝对象以及数组去重等操作在实际开发中非常常见。例如,在处理表单数据、管理应用状态、处理响应数据时经常需要进行这些操作。了解闭包对于理解 JavaScript 的作用域和内存管理也非常重要,有助于编写更高效、更安全的代码。\n相关问题
🦆
JavaScript 中的变量提升是如何工作的?▷
🦆
解释 JavaScript 中的原型链及其工作原理▷
🦆
解释事件循环 Event Loop 在 JavaScript 中的作用▷
🦆
什么是 JavaScript 的this关键字?它在不同上下文中的行为如何?▷