JavaScript面试问题与代码答案

JavaScript面试问题与代码答案

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

本文介绍了几个JavaScript面试问题及其解决方案,包括扁平化嵌套对象、查找数组重复值、防抖函数实现、递归反转字符串和检查回文字符串,并附有代码示例。

🎯

关键要点

  • 介绍了几个JavaScript面试问题及其解决方案。

  • 问题1:扁平化嵌套对象,提供了相应的代码示例。

  • 问题2:查找数组中的重复值,给出了实现代码。

  • 问题3:实现防抖函数,限制函数调用频率,附有代码示例。

  • 问题4:递归反转字符串,提供了递归实现的代码。

  • 问题5:检查字符串是否为回文,给出了清理和比较的代码示例。

延伸问答

如何扁平化一个嵌套的JavaScript对象?

可以使用递归函数来遍历对象并构建一个新的扁平化对象,示例代码如下:function flattenObject(obj, prefix = '', res = {}) { for (let key in obj) { const newKey = prefix ? `${prefix}.${key}` : key; if (typeof obj[key] === 'object' && obj[key] !== null) { flattenObject(obj[key], newKey, res); } else { res[newKey] = obj[key]; } } return res; }

如何查找数组中的重复值?

可以使用一个计数对象来跟踪出现的值,示例代码如下:function findDuplicates(arr) { const counts = {}; return arr.filter(item => counts[item] ? true : (counts[item] = 1, false)); }

什么是防抖函数,如何实现?

防抖函数用于限制某个函数的调用频率,示例代码如下:function debounce(func, delay) { let timer; return function (...args) { clearTimeout(timer); timer = setTimeout(() => func.apply(this, args), delay); }; }

如何递归反转一个字符串?

可以使用递归函数来实现字符串反转,示例代码如下:function reverseString(str) { if (str === '') return ''; return reverseString(str.slice(1)) + str[0]; }

如何检查一个字符串是否为回文?

可以通过清理字符串并比较其反转来检查,示例代码如下:function isPalindrome(str) { const cleaned = str.toLowerCase().replace(/[^a-z]/g, ''); return cleaned === cleaned.split('').reverse().join(''); }

➡️

继续阅读