JS常见面试试题总结【去重、遍历、闭包、继承等】

yizhihongxing

来讲解一下“JS常见面试试题总结【去重、遍历、闭包、继承等】”的完整攻略。

一、去重

JS中去重的方法有很多种,我这里介绍两种比较常见的方法。

1.1 利用Set去重

let arr = [1, 2, 3, 1, 2, 3];
let unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3]

1.2 利用reduce方法去重

let arr = [1, 2, 3, 1, 2, 3];
let unique = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(unique); // [1, 2, 3]

二、遍历

JS中常用的遍历方法有很多种,比如for循环、forEachmapfilter等等。

2.1 for循环遍历数组

let arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

2.2 forEach方法遍历数组

let arr = [1, 2, 3];
arr.forEach((item) => {
  console.log(item);
});

2.3 for...in循环遍历对象

let obj = {a: 1, b: 2, c: 3};
for (let key in obj) {
  console.log(key, obj[key]);
}

2.4 Object.keys方法遍历对象

let obj = {a: 1, b: 2, c: 3};
let keys = Object.keys(obj);
keys.forEach((key) => {
  console.log(key, obj[key]);
});

三、闭包

闭包是JS中一个很重要的概念,也是面试中常被问到的问题。下面是一个简单的例子:

function fn() {
  let num = 0;
  return function() {
    num++;
    console.log(num);
  }
}
let f = fn();
f(); // 1
f(); // 2
f(); // 3

这里的fn函数返回了一个内部函数,这个内部函数持有了fn函数中定义的num变量,并且每次调用这个内部函数的时候,num变量的值都会加1。

四、继承

JS中的继承也是面试中经常问到的问题,下面是一个用ES6的class关键字实现继承的例子:

class Animal {
  constructor(name) {
    this.name = name;
  }

  sayHi() {
    console.log(`My name is ${this.name}`);
  }
}

class Cat extends Animal {
  constructor(name) {
    super(name);
  }

  sayHi() {
    console.log(`Meow, My name is ${this.name}`);
  }
}

let cat = new Cat('Tom');
cat.sayHi(); // Meow, My name is Tom

这里我们定义了一个Animal类和一个Cat类,通过extends关键字实现了Cat类对Animal类的继承,即Cat类继承了Animal类的所有属性和方法。同时,Cat类还重写了sayHi方法,使得猫叫和动物叫有所区别。

以上就是“JS常见面试试题总结【去重、遍历、闭包、继承等】”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS常见面试试题总结【去重、遍历、闭包、继承等】 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 排序算法之PHP版快速排序、冒泡排序

    排序算法之PHP版快速排序、冒泡排序 在算法和数据结构中,排序是一种重要的操作,主要目的是将一组无序的数据按照一定的规则进行排序。常见的排序算法有冒泡排序、快速排序、归并排序等。本文将详细介绍php版本的快速排序和冒泡排序的实现。 冒泡排序 冒泡排序是一种最简单的排序算法之一。其思想是从数组的第一个元素开始比较,将大的元素交换到后面,依次比较下去,直到排序完…

    算法与数据结构 2023年5月19日
    00
  • python 如何在list中找Topk的数值和索引

    对于如何在Python的list中找Topk的数值和索引,可以采用以下方法: 方法一:使用sorted函数排序 可以使用Python内置的sorted函数对list进行排序,然后取前k个元素,同时得到它们的索引。具体代码如下: lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] k = 3 # 记录每个元素的索引和值 lst_wi…

    算法与数据结构 2023年5月19日
    00
  • java实现图形卡片排序游戏

    以下是“Java实现图形卡片排序游戏”的完整攻略。这个游戏的目标是将打乱的卡片,按顺序排好。具体的操作方法是通过拖拽卡片,让卡片位置移动进行排序。 技术栈 Java语言 Swing GUI库 排序算法 功能设计 加载卡片图片及绑定事件处理方法 卡片随机化处理 拖拽移动卡片 实现移动时的动画效果 判断拼图是否按顺序排好 记录游戏步骤、分数等信息 具体实现 加载…

    算法与数据结构 2023年5月19日
    00
  • redis zset实现滑动窗口限流的代码

    Redis ZSET(有序集合)非常适合实现滑动窗口限流。下面是实现滑动窗口限流的Redis ZSET代码攻略: 步骤一:定义一个键和窗口大小 为了使用Redis ZSET实现滑动窗口限流,您需要为每个限流器定义一个键。键的值将存储在Redis Sorted Set中,并且每个元素将具有其分数。我们将使用时间戳作为分数。此外,需要指定每个限制限流器的窗口大小…

    算法与数据结构 2023年5月19日
    00
  • C语言每日练习之选择排序

    C语言每日练习之选择排序 选择排序算法简介 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思路是在未排序的数列中,从前往后依次选择最小的数,和第一个数进行交换,然后在剩余的数列中从前往后选择最小的数,与第二个数进行交换,直到选择到最后一个数为止。 选择排序的时间复杂度为O(n²),属于较慢的排序算法,但是它的实现简单易懂,不需要额…

    算法与数据结构 2023年5月19日
    00
  • Python实现二维有序数组查找的方法

    首先,我们需要了解什么是二维有序数组。二维有序数组,也叫做二维矩阵,是一个含有 m 行 n 列的矩阵,每行每列都是有序的。在这个二维有序数组中,我们需要实现一个二分查找算法,用来查找某个目标值是否存在于这个矩阵中。 以下是步骤: 1. 将二维矩阵转换为一维数组 由于二维矩阵每一行每一列都是有序的,我们可以将二维矩阵看成一个一维数组,即将每一行连在上一行的后面…

    算法与数据结构 2023年5月19日
    00
  • 冒泡排序算法及Ruby版的简单实现

    冒泡排序是一种比较简单的排序算法,其基本思想是重复地遍历数列,每次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置,直到遍历完整个数列,这样一次遍历后,数列中最大的元素就被排到了最后面。重复执行此过程,直到整个数列有序为止。 以下是冒泡排序算法的Ruby版简单实现: def bubble_sort(array) n = array.l…

    算法与数据结构 2023年5月19日
    00
  • 利用JavaScript实现的10种排序算法总结

    作为“利用JavaScript实现的10种排序算法总结”的作者,首先需要明确以下内容: 熟悉10种排序算法的原理与流程 理解JavaScript作为一门编程语言的特点和应用场景 知道如何将算法的流程用JavaScript代码实现 针对以上内容,可以采取以下步骤: 梳理10种排序算法的流程和实现方式,用markdown文本形式编写对应的标题和文本,例如: 插入…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部