js
一叶知秋9307
学而不思则罔,思而不学则殆
展开
-
js 数组转树
转载自等风来的博客:https://www.cnblogs.com/mengff/p/13142128.html数组结构如下const arr = [ {id:1, parentId: null, name: 'a'}, {id:2, parentId: null, name: 'b'}, {id:3, parentId: 1, name: 'c'}, {id:4, parentId: 2, name: 'd'}, {id:5, parentId: 1, n转载 2021-07-22 02:27:40 · 535 阅读 · 0 评论 -
获取元素高度出错
#### 1. 问题如下今天别人的项目遇到一个问题,有一个数字滚动组件,强刷界面时候数字错位。滚动组件实现是将获取到的数字拆分,每一个数字为一列,都由0到9还有一个.组合数字滚动到需要的数字。然后发现强刷界面列的值不对有时779,有时880.#### 2. 解决思路1. 刚开始以为是 $().html() 绘制界面需要一段时间,然后紧跟着的获取高度时候还没绘制完成就出错了,然后就给他加了定时器,100毫秒后执行 html() 后的操作。然后也成功了。。。2. 后来想想不对,...原创 2021-06-24 11:56:23 · 788 阅读 · 0 评论 -
富文本中<script>标签转义
使用的是正则的方式,代码如下:let str = '<h1 id="title">XSS Demo</h1><script>alert("xss");</script>'function scriptTransfer(str) { let reg = /(<)([\/]?script)(>)/g // abc分别对应上面正则中第一二三括号内的匹配 return str.replace(reg, function (原创 2021-06-11 13:36:14 · 603 阅读 · 1 评论 -
str = “2[a]1[bc]“, 返回 “aabc“
//str = "2[a]1[bc]", 返回 "aabc".// str = "2[e2[d]]", 返回 "eddedd".// str = "3[abc]2[cd]ff", 返回 "abcabcabccdcdff".实现代码ru原创 2021-06-10 14:25:08 · 250 阅读 · 0 评论 -
比较两个值是否相等
可以比较任何值,可以使基本数据类型和引用数据类型,代码如下function ifEqual(target1, target2) { let t1Type = Object.prototype.toString.call(target1) let t2Type = Object.prototype.toString.call(target2) if (t1Type !== t2Type) { return false } if (t1Type ==原创 2021-06-10 12:23:24 · 294 阅读 · 0 评论 -
vue刷新界面
有时候界面要添加重置事件,有的界面非常多数据,一个个改太麻烦了,这是就可以将整个界面使用 v-if 消失在显示。这时候可以全局添加一个reload事件,哪里都可以调用,给 rou原创 2021-06-09 11:24:05 · 72 阅读 · 0 评论 -
模拟forEach实现
直接上代码Array.prototype.myForEach = function (fn, self) { if (typeof fn !== 'function') { throw new TypeError(fn + 'is not a function') } for (let i = 0; i < this.length; i++) { if (self) { fn.call(self, this[i],原创 2021-06-09 00:11:07 · 227 阅读 · 0 评论 -
js深拷贝
function deepCopy(target) { function handle(obj) { let newObj = new Object(null) Object.keys(obj).forEach(key => { let type = Object.prototype.toString.call(obj[key]) if(type === '[object Object]'){ .原创 2021-06-08 15:18:35 · 71 阅读 · 0 评论 -
函数柯里化
function rawMethod(a) { return a + 1;}function middleware1(next) { return function(a) { return next(a) + 1; };}function middleware2(next) { return function(a) { return next(a) + 1; };}function middleware3(next) {.原创 2021-06-08 07:26:34 · 134 阅读 · 0 评论 -
写个转换函数,把一个 JSON 对象的 key 从横杠形式转换到小驼峰形式
function convert(obj) { let reg = /_([a-zA-Z])/g; function handle(oldObj){ let temp = {} Object.keys(oldObj).forEach(key => { let result = key.replace(reg, function (a,b) { return b.toUpperCase()原创 2021-06-07 20:43:58 · 917 阅读 · 0 评论 -
vue中实现文本超过指定行省略显示组件
废话不多说,直接上代码<template> <div class="text-limit"> <span class="hide-text" ref="onlyOne">{{value ? value.slice(0, 2) : "中国"}}</span> <span class="hide-text" ref="hideText"></span> {{resultStr}} </div>原创 2021-03-02 09:53:43 · 731 阅读 · 0 评论 -
ESLint couldn‘t find the plugin “eslint-plugin-vue“
ESLint couldn't find the plugin "eslint-plugin-vue".(The package "eslint-plugin-vue" was not found when loaded as a Node module from the directory "/Users/zhangqi/Desktop".)It's likely that the plugin isn't installed correctly. Try reinstalling by runn原创 2021-02-24 17:16:09 · 4602 阅读 · 1 评论 -
模拟Promise实现
1. promise核心// 封装promise// 1. Promise 就是一个类,在执行这个类的时候,需要传递一个执行器进去,执行去会立即执行// 2. Promise 中有三个状态,分别为:成功(fulfilled)、失败(rejected)、等待(pending);一旦状态确定就不可更改// 3. resolve和reject函数用来更改状态// 4. then 方法内部做的事情就是判断状态,根据状态调用不同的回调函数(成功失败)// 5. then 成功回调有一个参数,表示成功之后的原创 2020-08-24 15:21:30 · 580 阅读 · 0 评论 -
Promise 用法
1.单个请求时let p = new Promise((resolve,reject)=>{ setTimeout(function () { if (true) { resolve('xx') } else { reject('yy') } },100)})p.then() .catch()2.多个请求时(各个请求没...原创 2019-05-27 13:53:55 · 151 阅读 · 0 评论