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

来讲解一下“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日

相关文章

  • 深入了解javascript 数组的sort方法

    深入了解JavaScript数组的sort方法 简介 在JavaScript中,数组(Array)是一个非常常用的数据结构,而sort()是Array原型上的非常常用的方法,可用于排序。数组中的元素可以是任何类型,但在排序时,所有元素都将转换为字符串形式,所以有时打算对不同数据类型的元素进行排序,您可能需要使用自定义比较函数。 基本使用方法 sort()方法…

    算法与数据结构 2023年5月19日
    00
  • 基于python进行桶排序与基数排序的总结

    基于python进行桶排序与基数排序的总结 桶排序 桶排序是一种稳定的排序算法,利用预先定义的桶按照一定的映射关系将待排序的元素分配到不同的桶中,并对每个桶中的元素进行排序,最后将所有桶中的结果合并起来即可。 具体的步骤如下: 找出待排序数组中的最大值max和最小值min,确定所需桶的数量,建立一个包含顺序桶的桶(列表)bucket和一个空列表result。…

    算法与数据结构 2023年5月19日
    00
  • Python实现希尔排序,归并排序和桶排序的示例代码

    Python实现希尔排序,归并排序和桶排序的示例代码 希尔排序 算法思想 希尔排序是插入排序的一种改进版本,它的基本思想是将待排序的数组分割成若干个子序列,对每个子序列进行插入排序,然后再将整个序列逐步缩小进行排序,直至最后整个序列排序完成。 示例代码 def shell_sort(arr): n = len(arr) gap = n // 2 while …

    算法与数据结构 2023年5月19日
    00
  • c++入门必学库函数sort的基本用法

    一、sort函数的基本介绍 sort()函数是C++ STL标准库提供的一种排序函数,能够对数组或容器进行排序。可以用于排序基本数据类型、结构体、对象等各种数据类型。其中,数组的排序时简单易行的,容器的排序则更加强大方便。 sort()的函数原型如下: template<class RandomAccessIterator> void sort(…

    算法与数据结构 2023年5月19日
    00
  • 全排列算法的非递归实现与递归实现的方法(C++)

    全排列算法是计算机科学领域中的一个经典问题,其功能是对给定的一组数进行全排列。在本文中,我们将对该算法的非递归实现和递归实现方法进行详细讲解。本文的代码示例基于C++语言。 非递归实现方法 算法思路 假设我们想对n个数进行全排列,那么我们可以首先将这n个数按照升序排列,然后使用以下步骤: 把这n个数的全排列问题转化为n-1个数的全排列问题; 依次取出每一个数…

    算法与数据结构 2023年5月19日
    00
  • 经典算法:基数排序的小例子

    让我来为你详细讲解“经典算法:基数排序的小例子”的完整攻略。 前言 基数排序是一种常见的排序算法,它的时间复杂度为O(nk),其中n表示待排序元素的个数,k表示元素的最大值的位数。相对于其他排序算法,它的时间复杂度比较低,适合用于对大量数据排序的情况。 算法思想 基数排序的基本思想是:将待排序的元素按照一定规则拆分成多个关键字,然后依次对每个关键字进行排序,…

    算法与数据结构 2023年5月19日
    00
  • C语言简明讲解快速排序的应用

    C语言简明讲解快速排序的应用 快速排序的概述 快速排序是一种基于比较的排序算法,最初由Tony Hoare于1959年发明,因其在实践中的高效性而受到广泛的应用。快速排序的基本思想是通过不断地分割(partition)和交换(swap)来实现排序,具体来说,就是先选取一个pivot数,然后将序列中小于pivot的数放在pivot左边,大于pivot的数放在p…

    算法与数据结构 2023年5月19日
    00
  • C语言实现排序算法之归并排序详解

    C语言实现排序算法之归并排序详解 概述 归并排序是一种分治算法,在处理大规模数据排序时具有较高的效率。该算法将要排序的数组分为两部分,对每个部分内部进行排序,然后将排好序的两部分合并成一个有序数组。该算法在实现时需要借助递归和迭代两种方式。 步骤 归并排序可递归或迭代实现。以下是递归实现的步骤: 分解:将待排序数组分为两个等长的子数组,分别为左半部分和右半部…

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