js
星月I随心
这个作者很懒,什么都没留下…
展开
-
从零开始, 用原生js写一个类似elementUI的日历
最近工作中经常用到日历这个组件, 以前大多是用moment.js或者dayjs去做的, 其实使用原生js也并不复杂.1.首先我们来认识几个这个组件中使用的new Date常用的方法 this.lastDay = new Date(y, m + 1, 0).getDate() // 获取指定月的最后一天也即每月多少天 this.lastMonthDay = new Date(y, m, 0).getDate() // 获取上个月多少天 this.firs...转载 2021-12-10 14:11:48 · 563 阅读 · 0 评论 -
JS数组reduce()方法详解及高级技巧
reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路是最捷径的,亦或许reduce()逼格更高...1、语法arr.reduce(callback,[initialValue])reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素.转载 2021-11-04 00:42:48 · 528 阅读 · 0 评论 -
js将对象以参数形式拼接在某个地址后
function splitQueryParams(params) { let tempParams = []; if (Object.keys(params).length <= 0) return tempParams; for (let key in params) { tempParams.push(`${key}=${params[key]}`); } return tempParams.join("&");}// 'name=关键字&a.转载 2021-10-22 15:22:44 · 578 阅读 · 0 评论 -
JS中forEach()方法的使用
一、概念forEach()方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上)。注意:forEach()的返回值为undefined forEach()对于空数组是不会执行回调函数的 没有办法中止或者跳出 forEach()循环,除了抛出一个异常二、语法arr.forEach(callback(currentValue, index, arr), thisArg)参数说明:callback:必须。为数组转载 2021-10-21 19:06:44 · 1166 阅读 · 0 评论 -
JS中map()函数的使用
一、概念map()方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。注意:map()不会对空数组进行检测 map()不会改变原始数组二、语法array.map(function(currentValue, index, arr), thisIndex)参数说明:function(currentValue, index, arr):必须。为一个函数,数组中的每个元素都会执行这个函数。其中函数参数:currentVal转载 2021-10-21 19:05:22 · 550 阅读 · 0 评论 -
JS实现延时
setTimeout(function (){ window.location.reload();}, 3000);setTimeout(()=>{ console.log(this.id) },100)原创 2021-06-04 10:16:26 · 160 阅读 · 0 评论 -
js实现身份证精确校验
之前我们前端对身份证的校验,都是用的正则校验legalTex = /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/ 但是这个正则的含义仅仅表示身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X这样的校验是不精确的,你随便改个数字,校验都可通过如下是身份证的精确校验方法,百度搜索的话内容都差不多,我对其做了如下封装:1.新建一个js文件,内容如下co.转载 2021-03-30 15:45:59 · 11782 阅读 · 4 评论 -
js使用filter递归过滤树形结构数组
今天遇到了这么一个问题,一个管理系统的前端使用vue,通过路由控制用户权限。由后端返回权限编码列表,前端菜单列表需要对这些权限编码进行过滤。菜单是树形结构,如果父级菜单被过滤,则该父级下所有子级菜单也被过滤。由于是树形结构,肯定要用到递归,大致代码如下:// 菜单列表const menuList = [{ name: '系统管理', code: 'system_manage', children: [{ name: '用户管理', cod.转载 2021-03-23 09:00:18 · 2332 阅读 · 0 评论 -
ES6通过map、解构和扩展运算符实现删除所有数组对象中的某个属性
先说需求在一个表单中有两个下拉框,都是访问同一个接口拿到树结构的List数据后动态绑定的到各自的下拉框,区别在于A下拉框只显示根节点,B下拉框显示树结构的所有数据。为了性能上的考虑,必须满足前端只发送一个ajax请求,后端也只写一个获取TreeList的结构的接口,用来满足两个下拉框的动态赋值。如图:左图显示根节点项,右图显示所有树结构项贴上返回的数据结构思路:从数据结构来分析这是个包含了所有根节点和子节点数据的treeList数组对象。B下拉...转载 2020-12-03 23:54:45 · 2294 阅读 · 0 评论 -
body-parser 使用详解
一、简介github node.js body 解析中间件 处理程序之前,在中间件中对传入的请求体进行解析(response body) body-parser 提供四种解析器 JSON body parser Raw body parser Text body parser URL-encoded form body parser二、使用搭建一个简单的demomkdir body-parser-democd body-parser-demonp...转载 2020-08-18 17:22:00 · 8378 阅读 · 1 评论 -
nodejs 生成uid(唯一标识符) —— node uuid模块的使用
nodejs 提供了一个 node-uuid 模块用于生成 uuid(唯一标识符) 首先执行 : npm install node-uuid es6引入 import uuid from 'node-uuid'; console.log(uuid.v1()); console.log(uuid.v4());v1 是基于时间戳生成的uid;v4是随机生成的uid; 结果: '6c84fb90-12c4-11e1-840d-7b25c5ee77.原创 2020-08-18 17:08:59 · 11804 阅读 · 0 评论 -
JS中将对象转化为数组
前言其实这本来应该是一个很基础的问题了,但我之做一想记录一下是因为之前因为对象转数组的时候卡住了后来弄了出来,但最近再遇到这个问题时竟然又卡主了,所以,关于这个问题,如何把一个对象obj:{'未完成':5, '已完成':8, '待确认':4, '已取消':6}转为newObj:[{"未完成":5},{"已完成":8},{"待确认":4},{"已取消":6}]你已经知道如何操作了,那这篇文章你也就没有必要看了。对象的两种取值方式我们都知道,JS中对象有两种取值方式,通过在.后面直接加属性转载 2020-08-13 17:59:35 · 3542 阅读 · 0 评论 -
json.stringify()的妙用,json.stringify()与json.parse()的区别
一、JSON.stringify()与JSON.parse()的区别最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将JavaScript 对象转换为 JSON 字符串,而JSON.parse()可以将JSON字符串转为一个对象。简单点说,它们的作用是相对的,我用JSON.stringify()将对象a变成了字符串c,那么我就可以用JSON.parse()将字符串c还原成对象a。let arr = [1,2,3];JSON.转载 2020-08-11 10:01:59 · 146 阅读 · 0 评论 -
Mustache语法中实现if-else
1、{{#prop}}{{/prop}}标签:这对标签的作用非常强大,可以同时完成if-else和for-each以及动态渲染的模板功能。在这对标签之间,可以定义其它模板内容,嵌套所有标签1.{{#prop}}{{/prop}}标签:这对标签的作用非常强大,可以同时完成if-else和for-each以及动态渲染的模板功能。在这对标签之间,可以定义其它模板内容,嵌套所有标签。<ul class="dropdown-menu" role="menu"> <shir.转载 2020-08-10 17:58:43 · 621 阅读 · 0 评论 -
js如何给yyyy-MM-dd的格式加上月份或减去月份
如需要把2014-01-01加个10月得到2014-11-01var d = new Date("2014/01/01")d.setMonth(d.getMonth()+10);alert(d.toLocaleString());//输出2014/11/01如要输出格式是2014-11-01var d = new Date("2014-01-01".replace(/-/g,"/"));d.setMonth(d.getMonth()+10);var str = d.getFu...原创 2020-08-06 17:18:49 · 856 阅读 · 1 评论