前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典JavaScript手写面试题和答案

经典JavaScript手写面试题和答案

原创
作者头像
肥晨
发布2023-06-26 17:29:21
1320
发布2023-06-26 17:29:21
举报
文章被收录于专栏:农民工前端农民工前端

实现一个函数去重?

代码语言:javascript
复制
function unique(array) {
  return Array.from(new Set(array));
}

实现一个函数,判断指定元素在数组中是否存在?

代码语言:javascript
复制
function includes(array, value) {
  for (let i = 0, len = array.length; i < len; i++) {
    if (array[i] === value) {
      return true;
    }
  }
  return false;
}

实现一个函数,将给定字符串反转?

代码语言:javascript
复制
function reverseString(str) {
  // 将字符串分割成一个数组
  const arr = str.split('');
  // 反转数组
  arr.reverse();
  // 将数组拼接成字符串
  return arr.join('');
}

实现一个函数,检测指定字符串是否为回文(即从前往后和从后往前的字符序列都相同)?

代码语言:javascript
复制
function isPalindrome(str) {
  // 将字符串反转后与原字符串比较
  return reverseString(str) === str;
}
// 利用上题的实现
function reverseString(str) {
  return str.split('').reverse().join('');
}

实现一个函数,计算两个数的最大公约数?

代码语言:javascript
复制
function gcd(num1, num2) {
  return num2 ? gcd(num2, num1 % num2) : num1;
}

实现Array.prototype.reduce函数

代码语言:javascript
复制
Array.prototype.myReduce = function(fn, initialValue) {
  let accum = initialValue === ?developer/article/2298089/undefined ? ?developer/article/2298089/undefined : initialValue;
  for (let i = 0; i < this.length; i++) {
    if (accum !== ?developer/article/2298089/undefined) {
      accum = fn.call(?developer/article/2298089/undefined, accum, this[i], i, this);
    } else {
      accum = this[i];
    }
  }
  return accum;
};

实现 一个类似setTimeout的函数delay(ms)

代码语言:javascript
复制
function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

实现一个防抖函数debounce(fn, delayTime)

代码语言:javascript
复制
function debounce(fn, delayTime) {
  let timerId;
  return function() {
    const context = this;
    const args = arguments;
    clearTimeout(timerId);
    timerId = setTimeout(() => {
      fn.apply(context, args);
    }, delayTime);
  };
}

实现一个节流函数throttle(fn, intervalTime)

代码语言:javascript
复制
function throttle(fn, intervalTime) {
  let timerId;
  let canRun = true;
  return function() {
    const context = this;
    const args = arguments;
    if (!canRun) return;
    canRun = false;
    timerId = setTimeout(function() {
      fn.apply(context, args);
      canRun = true;
    }, intervalTime);
  };
}

实现一个深度拷贝函数deepClone(obj)

代码语言:javascript
复制
function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  let result = Array.isArray(obj) ? [] : {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      result[key] = deepClone(obj[key]);
    }
  }
  return result;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现一个函数去重?
  • 实现一个函数,判断指定元素在数组中是否存在?
  • 实现一个函数,将给定字符串反转?
  • 实现一个函数,检测指定字符串是否为回文(即从前往后和从后往前的字符序列都相同)?
  • 实现一个函数,计算两个数的最大公约数?
  • 实现Array.prototype.reduce函数
  • 实现 一个类似setTimeout的函数delay(ms)
  • 实现一个防抖函数debounce(fn, delayTime)
  • 实现一个节流函数throttle(fn, intervalTime)
  • 实现一个深度拷贝函数deepClone(obj)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com