展平嵌套对象
问题:编写一个函数来展平嵌套的 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;** } console.log(flattenObject({ a: { b: { c: 1 } }, d: 2 })); // Output: { 'a.b.c': 1, d: 2 }
2。查找数组中的重复项
问题:编写一个函数来查找数组中的重复值。
代码:
function findDuplicates(arr) { ** const counts = {};** ** return arr.filter(item => counts[item] ? true : (counts[item] = 1, false));** } console.log(findDuplicates([1, 2, 2, 3, 4, 4, 5])); // Output: [2, 4]
3。实现去抖
问题:编写一个去抖函数来限制函数调用的速率。
代码:
function debounce(func, delay) { ** let timer;** ** return function (...args) {** ** clearTimeout(timer);** ** timer = setTimeout(() => func.apply(this, args), delay);** ** };** } const log = debounce(() => console.log('Logged after 1s'), 1000); log();
4。递归地反转字符串
问题:编写一个递归函数来反转字符串。
代码:
function reverseString(str) { ** if (str === "") return "";** ** return reverseString(str.slice(1)) + str[0];** } console.log(reverseString("hello")); // Output: "olleh"
5。检查回文
问题:编写一个函数来检查字符串是否是回文。
代码:
function isPalindrome(str) { ** const cleaned = str.toLowerCase().replace(/[^a-z]/g, '');** ** return cleaned === cleaned.split('').reverse().join('');** } console.log(isPalindrome("A man, a plan, a canal, Panama")); // Output: true
阅读更多... ⇲
JavaScript 面试问题和答案(附代码)
用代码反应面试问题和答案
角度面试问题
CSS 面试问题及其答案和代码
以上是JavaScript 面试问题和答案(附代码)的详细内容。更多信息请关注PHP中文网其他相关文章!