
☛ JS数据结构与算法
大龙Aiden
Fuck the God
展开
-
js实现树形数据转成扁平数据
利用递归的方法循环树形数组,当遇到有children的对象再次调用递归函数循环children数组,每次循环的数据放入一个提前声明好的数组里,等所有递归函数执行完,这个数组即是想要得到的扁平数据数组。let res = []const fn = (source)=>{ source.forEach(el=>{ res.push(el) e...原创 2019-10-31 11:14:32 · 9102 阅读 · 4 评论 -
JS数据结构与算法 —— 散列表(哈希表)
概念:散列表(Hash table,也叫哈希表),是根据关键码-值(Key-value)的形式进行存储和访问的数据结构。散列表类似于字典,是以 键-值(Key-value) 对形式存储的数据结构,不同点在于散列表的键key是经过散列函数计算得出,我们称之为关键码,每个关键码都对应一个值,我们把这种以 关键码-值 形式存储数据的数组称为散列表。作用:可以快速定位元素,并拿到对应的值。相...原创 2019-03-03 15:09:33 · 1336 阅读 · 0 评论 -
JS数据结构与算法 —— 字典
字典是一些节点的集合,每个节点包含了一个key和数据域。字典是一种以 键-值对 形式存储数据的数据结构。如同我们平时查看通讯录一样,要找一个电话,首先要找到该号码的机主名字,名字找到了,紧接着电话号码也就有了。JavaScript 中的 Object 类就是以字典的形式设计的,下面我们将会借助 Object 类的特性,自主实现一个字典类。js实现一个字典定义一个Dictiona...原创 2019-01-05 14:31:20 · 523 阅读 · 0 评论 -
JS数据结构与算法 —— 集合,并集,交集,补集
概念:集合是由一组无序且唯一(每个元素只出现一次)的项组成的一组数据。其与数学里的集合是同一个概念。在ES6里已经引入了集合的数据结构概念——Set类。分类:常见的有空集,并集,交集,差集。应用场景:1)数据去重;2)用于存储一些独一无二的数据。js实现一个集合集合的特性类似于JavaScript数据类型里的Object,Object对象里的每个键都是唯一。下面用一个名为item的...原创 2019-01-05 14:10:31 · 1750 阅读 · 0 评论 -
JS数据结构与算法 —— 链表
概念:链表是计算机的一种存储结构。链表由一系列结点组成,每个结点里包含了本结点的数据域和指向下一个结点的指针。如下图item存储数据,next存储下一个节点的引用,其中最后一个节点的指针指向了null,表示链表结束的位置。作用:按一定顺序储存数据,允许在任意位置插入和删除结点。分类:单向链表、双向链表、单向循环链表和双向循环链表应用场景:适用于需要频繁进行插入和删除操作的数据存储。...原创 2018-12-01 15:56:45 · 694 阅读 · 0 评论 -
JS数据结构与算法 —— 队列
概念:只允许在表的前端(front)进行删除操作,在表的后端(rear)进行插入操作的一种特殊线性表核心思想:先进先出分类:1)循环队列:普通队列的首尾相接形成圆环,这样的队列称为循环队列(Circular Queue) 2)优先队列:普通队列的元素被赋予了优先级,具有最高优先级的元素最先删除,这样的队列称为优先队列(Priority Queue)操作方法:1)...原创 2018-11-26 22:37:36 · 370 阅读 · 0 评论 -
web前端开发面试算法题(应届生)-- js篇
前言 如今的很多互联网公司,尤其是一些大公司总喜欢出各种算法题,考察程序员的逻辑思维能力。这是本人参加应聘时做过的面试题目,还有一些是网上收集的在面试时出现率比较高的算法题,现在拿出来跟大家一起分享,希望对一些前端开发应聘者能带来一些帮助,面试时即使做的题目跟这些不一样,但是这些做题的思想都是通用的。 题目1:这是一个9*9的乘法口诀表,是完全用算法生成的,下来请用j...原创 2018-03-31 15:48:51 · 16361 阅读 · 2 评论 -
前端开发面试题(应届生)-- js基础算法题
前言 本文汇集了js的一些基础算法题,很多互联网公司在招聘初级前端开发工程师(应届生)时,都喜欢让应聘者做一些js算法题,这时,若你学会了这些js基础算法题的解题思想对你很有帮助,有一些甚至可以直接套用,所以,建议应届生面试前务必看一遍。题目题目1:翻转字符串。解题思路:1、split()字符串转成数组;2、reverse()翻转数组;3、join()数组转化成字符串...转载 2018-04-01 18:28:16 · 5832 阅读 · 0 评论 -
JS数据结构与算法 —— 栈
概念:表头进行插入和删除操作的线性表核心思想:先进后出作用:在编程语言的编译器和内存中保存变量、方法调用操作方法:1)push() 进栈,即向栈里添加元素 2)pop() 出栈,即把元素从栈中删除 3)peak() 查询栈顶元素,即查询栈里最顶部那个元素(最后添加) 4)i...原创 2018-11-25 13:12:12 · 633 阅读 · 2 评论 -
JavaScript十大排序算法思想详解
前言0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2 算法复杂度0.3 相关概念稳定:如果a...转载 2018-03-28 19:49:14 · 645 阅读 · 0 评论