☛ JavaScript(ES6)
大龙Aiden
Fuck the God
展开
-
JavaScript洗牌算法
概念洗牌算法即是把一组数组里的元素随机组合生成一个新数组。实现const shuffle = ([...arr]) => { let m = arr.length; while (m) { const i = Math.floor(Math.random() * m--); [arr[m], arr[i]] = [arr[i], arr[m]]; } return arr;}; // 测试const tes原创 2022-05-17 18:02:10 · 543 阅读 · 0 评论 -
js通过match方法和正则表达式截取某两个字符串中间部分的字符
比如我要从下面base64编码字符串中截取一个文件后缀名,即image/和;之间的字符串,方法如下:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA......代码:let src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA......'let res = src.matc...原创 2020-03-13 10:37:37 · 3948 阅读 · 2 评论 -
js实现树形数据转成扁平数据
利用递归的方法循环树形数组,当遇到有children的对象再次调用递归函数循环children数组,每次循环的数据放入一个提前声明好的数组里,等所有递归函数执行完,这个数组即是想要得到的扁平数据数组。let res = []const fn = (source)=>{ source.forEach(el=>{ res.push(el) e...原创 2019-10-31 11:14:32 · 8986 阅读 · 4 评论 -
js实现无限层级树形数据结构(创新算法)
由于做项目的需要,把一个线性数组转成树形数组,在网上查了很多文章,觉得他们写的太复杂了,于是自己写了一个,在折腾了一下午终于把它写出来啦(激动.gif),用两个filter过滤器就搞定了,代码简洁明了,数据结构小白都能看懂。js代码:把扁平数据转成树形数据function setTreeData(source){ let cloneData = JSON.parse(JSON.s...原创 2018-09-22 20:19:32 · 41302 阅读 · 100 评论 -
vue制作一个无限层级伸缩树形菜单栏
使用v-for循环生成一个多级嵌套菜单栏,只要你学会了这个方法,几乎所有的菜单栏都可以实现了。实例1:不能伸缩的多级菜单栏现在以一个三级菜单栏为例:<div class="level-one" v-if="obj.level == 1" v-for="obj in bar1"><a>{{obj.title}}</a> &原创 2018-06-25 14:02:31 · 7872 阅读 · 4 评论 -
JS数据结构与算法 —— 栈
概念:表头进行插入和删除操作的线性表核心思想:先进后出作用:在编程语言的编译器和内存中保存变量、方法调用操作方法:1)push() 进栈,即向栈里添加元素 2)pop() 出栈,即把元素从栈中删除 3)peak() 查询栈顶元素,即查询栈里最顶部那个元素(最后添加) 4)i...原创 2018-11-25 13:12:12 · 606 阅读 · 2 评论 -
JS数据结构与算法 —— 队列
概念:只允许在表的前端(front)进行删除操作,在表的后端(rear)进行插入操作的一种特殊线性表核心思想:先进先出分类:1)循环队列:普通队列的首尾相接形成圆环,这样的队列称为循环队列(Circular Queue) 2)优先队列:普通队列的元素被赋予了优先级,具有最高优先级的元素最先删除,这样的队列称为优先队列(Priority Queue)操作方法:1)...原创 2018-11-26 22:37:36 · 346 阅读 · 0 评论 -
JS数据结构与算法 —— 链表
概念:链表是计算机的一种存储结构。链表由一系列结点组成,每个结点里包含了本结点的数据域和指向下一个结点的指针。如下图item存储数据,next存储下一个节点的引用,其中最后一个节点的指针指向了null,表示链表结束的位置。作用:按一定顺序储存数据,允许在任意位置插入和删除结点。分类:单向链表、双向链表、单向循环链表和双向循环链表应用场景:适用于需要频繁进行插入和删除操作的数据存储。...原创 2018-12-01 15:56:45 · 653 阅读 · 0 评论 -
js高效修改对象数组里的对象属性名
有些时候,我们前端从后端拿过来的JSON对象数据,某些字段并不是前端想要的,需要对一些字段名进行重命名。一般修改对象数组的对象属性名,最简便的就是通过遍历对象数组的方法进行修改,但是用这个方法,如果处理的数据量很大,它的执行效率是非常低的。下面介绍一个更高效的方法,即通过正则的方法进行过滤修改。JSON.parse(JSON.stringify(data).replace(/title/g,...原创 2019-01-01 14:16:55 · 18952 阅读 · 11 评论 -
JS数据结构与算法 —— 集合,并集,交集,补集
概念:集合是由一组无序且唯一(每个元素只出现一次)的项组成的一组数据。其与数学里的集合是同一个概念。在ES6里已经引入了集合的数据结构概念——Set类。分类:常见的有空集,并集,交集,差集。应用场景:1)数据去重;2)用于存储一些独一无二的数据。js实现一个集合集合的特性类似于JavaScript数据类型里的Object,Object对象里的每个键都是唯一。下面用一个名为item的...原创 2019-01-05 14:10:31 · 1714 阅读 · 0 评论 -
JS数据结构与算法 —— 字典
字典是一些节点的集合,每个节点包含了一个key和数据域。字典是一种以 键-值对 形式存储数据的数据结构。如同我们平时查看通讯录一样,要找一个电话,首先要找到该号码的机主名字,名字找到了,紧接着电话号码也就有了。JavaScript 中的 Object 类就是以字典的形式设计的,下面我们将会借助 Object 类的特性,自主实现一个字典类。js实现一个字典定义一个Dictiona...原创 2019-01-05 14:31:20 · 499 阅读 · 0 评论 -
JS数据结构与算法 —— 散列表(哈希表)
概念:散列表(Hash table,也叫哈希表),是根据关键码-值(Key-value)的形式进行存储和访问的数据结构。散列表类似于字典,是以 键-值(Key-value) 对形式存储的数据结构,不同点在于散列表的键key是经过散列函数计算得出,我们称之为关键码,每个关键码都对应一个值,我们把这种以 关键码-值 形式存储数据的数组称为散列表。作用:可以快速定位元素,并拿到对应的值。相...原创 2019-03-03 15:09:33 · 1296 阅读 · 0 评论 -
js如何修改伪类样式如before或after
概括通过js创建一个内嵌样式表,并添加需要修改的伪类样式,覆盖原始的伪类样式。介绍html代码<ul> <li>apple</li> <li>banana</li> <li>pear</li></ul>css代码ul li{ list-style: no...原创 2019-07-29 15:46:07 · 4433 阅读 · 0 评论 -
js判断IE浏览器的版本,若版本过低则跳转到提示页面
IE9 以下浏览器都支持条件判断语句,可以在 </head> 标签结束前添加如下代码做自动跳转,自定义修改提示页面地址。方法一:var DEFAULT_VERSION = "9.0";var ua = navigator.userAgent.toLowerCase();var isIE = ua.indexOf("msie") > -1;var safariVer...原创 2018-07-03 11:27:34 · 7833 阅读 · 0 评论 -
web前端开发面试算法题(应届生)-- js篇
前言 如今的很多互联网公司,尤其是一些大公司总喜欢出各种算法题,考察程序员的逻辑思维能力。这是本人参加应聘时做过的面试题目,还有一些是网上收集的在面试时出现率比较高的算法题,现在拿出来跟大家一起分享,希望对一些前端开发应聘者能带来一些帮助,面试时即使做的题目跟这些不一样,但是这些做题的思想都是通用的。 题目1:这是一个9*9的乘法口诀表,是完全用算法生成的,下来请用j...原创 2018-03-31 15:48:51 · 16206 阅读 · 2 评论 -
前端开发面试题(应届生)-- js基础算法题
前言 本文汇集了js的一些基础算法题,很多互联网公司在招聘初级前端开发工程师(应届生)时,都喜欢让应聘者做一些js算法题,这时,若你学会了这些js基础算法题的解题思想对你很有帮助,有一些甚至可以直接套用,所以,建议应届生面试前务必看一遍。题目题目1:翻转字符串。解题思路:1、split()字符串转成数组;2、reverse()翻转数组;3、join()数组转化成字符串...转载 2018-04-01 18:28:16 · 5439 阅读 · 0 评论 -
JavaScript十大排序算法思想详解
前言0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。&amp;amp;nbsp;0.2 算法复杂度0.3 相关概念稳定:如果a...转载 2018-03-28 19:49:14 · 615 阅读 · 0 评论 -
前端开发必会的Dom节点操作方法
1.访问/获取节点document.getElementById(id); //返回对拥有指定id的第一个对象进行访问document.getElementsByName(name); //返回带有指定名称的节点集合 注意拼写:Elementsdocument.getElementsByTagName(tagname); //返回带有指定标签名的对象集合...转载 2018-04-13 18:46:55 · 635 阅读 · 1 评论