Javascript踩过的坑
文章平均质量分 84
小城听风雨
有些鸟儿注定是关不住的, 因为它们的每一片羽毛都闪耀着自由的光辉
展开
-
JavaScript 小技巧2
JavaScript 小技巧1. Replacestring.Replace() 函数只会替换第一个项目。你可以在这个正则表达式的末尾添加 /g 来替换所有内容。var example = "potato potato";console.log(example.replace(/pot/, "tom"));// "tomato potato"console.log(example.replace(/pot/g, "tom"));// "tomato tomato"2. 提取唯一值我们可转载 2020-12-23 15:36:01 · 181 阅读 · 0 评论 -
js排序复杂度
原创 2020-12-23 11:31:36 · 194 阅读 · 0 评论 -
JavaScript中遍历数组小问题
JavaScript中遍历数组小问题1. break、return对遍历的影响const arr = [1, 2, 3, 4, 5, 6];for - breakfor (let i = 0; i < arr.length; i++) { if (arr[i] === 3) { console.log(i); break; } console.log(arr[i]);}输出:for - returnfor (let i = 0原创 2020-12-23 11:31:06 · 181 阅读 · 0 评论 -
Js获取url参数
Js获取url参数1. 如果参数为字符串:URL:http://localhost:8088/#/orderDetail?workOrderId=001&type=0&status=processing&event=yesgetQueryVariable(name) { let reg = new RegExp("(^|&)?" + name + "=([^&]*)(&|$)", "i"); let r = window.location原创 2020-10-23 19:48:10 · 261 阅读 · 0 评论 -
Javascript遍历数组的方法
1. ES55种迭代方法ES5中 for...in遍历以及 every()和for...in对终止语句break、continue的处理2. ES6for...of遍历keys():对键名(数组下标)的遍历values():对键值的遍历entries():对键值对的遍历find():返回数组中满足提供的测试函数的第一个元素的值findIndex():返回数组中满足提供的测试函数的第一个元素的索引 若没有找到对应元素则返回-13. 遍历数组时对空格的处理原创 2020-08-24 14:36:32 · 328 阅读 · 0 评论 -
Js 控制台展开之前与展开之后数据不一致问题
控制台展开之前与展开之后数据不一致问题解决:打印时克隆一份即可。// underscore: https://underscorejs.net/ 我这里使用的是underscore插件import u from 'underscore';console.log(u.clone(rack_t));原创 2020-08-17 11:06:37 · 2288 阅读 · 0 评论 -
JS遍历数组并导出伪数组后 - 排序(正序)
JS遍历数组并导出伪数组后 - 排序(正序)优雅的语法:Array.from(arr,item => {return item.id}).sort()let arr = [ { id: 3, name: '小明' }, { id: 5, name: '小花' }, { id: 1, name: '小黑' }, { id: 4,原创 2020-08-11 15:55:07 · 373 阅读 · 0 评论 -
js 对比两个数组包含内容是否相等
对比两个数组包含内容是否相等const result = val.length === list_v.length && val.every(a => list_v.some(b => a === b)) && list_v.every(_b => val.some(_a => _a === _b));// result: true原创 2020-06-22 10:19:43 · 1025 阅读 · 0 评论 -
删除数组中相匹配的元素
删除数组arr中isDefault属性为false的元素arr = arr.filter(({ isDefault }) => isDefault !== false);原数组arr:[ { "type": "selection", "width": 60, "align": "center", "fixed": "left", }, { "title": "主机名", .原创 2020-06-08 17:25:30 · 1181 阅读 · 0 评论 -
JS: 找出数组中只出现一次的元素
找出数组中只出现一次的元素第一种:indexOf()和lastIndexOf(),只要两个相等,就是只出现一次的数。function FindNumsAppearOnce(array){ // return list, 比如[a,b],其中ab是出现一次的两个数字 var res = []; for (let i = 0;i<array.length;i++){...原创 2020-03-25 15:33:55 · 4216 阅读 · 1 评论 -
手动实现一种时间复杂度为 O(n log n) 的排序算法。
手动实现一种时间复杂度为 O(n log n) 的排序算法。解决思路:快速排序 - 时间复杂度为 nlognvar quickSort = function (arr) { if (arr.length <= 1) { return arr; } var centerIndex = Math.floor(arr.length / 2); // 取中间基准 v...原创 2020-03-24 14:37:39 · 1530 阅读 · 0 评论 -
实现一个函数, // 判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 k, // 存在则返回 true,否则返回 false。
实现一个函数,判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 k,存在则返回 true,否则返回false。该函数的输入参数有两个,第一个参数为整数数组 nums,第二个参数为整数 k,返回值为布尔值。【不要使用排序!要求时间复杂度为O(n),n 为数组长度】解决思路:遍历每个元素,让指定值减去每一个元素,得到的数字再判断是否在数组中存在,存在返回true,否则返回fa...原创 2020-03-24 13:53:32 · 1765 阅读 · 1 评论 -
表现与数据分离
表现与数据分离:表现:顾名思义,就是表达出来的现象,在前端来看,就是html+css,就是平常所看到的的网页的架子;数据:一般是从后端数据库或从哪爬过来的数据,然后在前台显示出来,即是网页中各个结构上的内容;好处与坏处:好处:模块化 –> 容易测试 –> 降低bug频率;坏处:程序结构复杂,比较耗时,上手有学习曲线;应用场景:项目具有明显的数据需求,比如要与很多...原创 2019-12-23 16:50:15 · 1080 阅读 · 0 评论 -
字符串截取:split()
split()split() 方法用于把一个字符串分割成字符串数组。语法stringObject.split(separator,howmany)separator。必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。howmany。可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串...原创 2019-12-23 14:24:34 · 1554 阅读 · 0 评论 -
arr.concat()、arr.slice()、arr.splice()
arr.concat()arr.concat()语法与定义:concat() 方法用于连接两个或多个数组。arrayObject.concat(arrayX,arrayX,......,arrayX)必需。arrayX该参数可以是具体的值,也可以是数组对象。可以是任意多个。基于当前数组中的所有项创建一个新数组。简单的说,concat()先给当前数组创建一个副本,然后将接收到的参数添加到这...原创 2019-12-23 14:09:00 · 5603 阅读 · 0 评论 -
ES6 - Object.assign()
ES6 - Object.assign()语法与定义:Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。const target = { a: 1 };const source1 = { b: 2 };const source2 = {...原创 2019-12-23 13:29:28 · 370 阅读 · 0 评论 -
判断对象下所有键值对key-value中value值是否为空?
判断对象下所有键值对key-value中value值是否为空?let obj_v = {a:1,b:2,c:""};if(isObjEmpty(obj_v)) { console.log("该对象value值全部为空!");}// 封装function isObjEmpty(obj) { let flag = true; let arr = Object.keys(obj).m...原创 2019-11-25 15:09:00 · 4586 阅读 · 0 评论 -
JS中将对象转化为数组
JS中将对象转化为数组var obj={"one":"I am 1","two":"I am 2"};d得到key值var arr = Object.getOwnPropertyNames(obj); // arr=["one", "two"] var arr2 = Object.keys(obj); // arr=["one", "two"] 得到value值var valA...原创 2019-10-23 11:22:34 · 1293 阅读 · 0 评论 -
js字符串反转
js字符串反转str.split('').reverse().join('')原创 2019-10-10 16:43:00 · 365 阅读 · 0 评论 -
js排序(包含小数)
js排序(包含小数)var arr = [];// 从大到小排序arr.sort(function(a,b){return b-a})// 从大到小排序arr.sort(function(a,b){return a-b})原创 2019-08-22 13:05:37 · 1751 阅读 · 0 评论 -
Js选择排序
语法:从下标0开始,与其后所有元素相比较,若其后元素大,则交换位置,最后从大到小排序输出 <script> var arr = [5,3,6,7,9,1,23,32,11,8]; for(var i = 0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]<arr...原创 2018-08-25 15:54:47 · 1374 阅读 · 0 评论 -
Js冒泡排序
冒泡:顾名思义就是两两比较,取较大值,较大值往后走。平均时间复杂度O(n*n)最好情况O(n)最差情况O(n*n)空间复杂度O(1)稳定性:稳定 <script> var arr=[12,5,2,76,8,45,90,123]; function yunxing(m) { for(var i=0;i<arr.length-1;i++){ //外...原创 2018-08-25 15:52:14 · 159 阅读 · 0 评论 -
Js删除元素标签问题
问题:删除ul标签下的li第一种:ul.innerHtml = ""; 这只会删除标签,不会删除便签下的事件。第二种:for(var i = 0;len = ul.chldren.length;i<len;i++){ ul.removeChild(ul.children[0]);}为什么不写i<ul.chldren.length呢?因为一直再删除元素,...原创 2018-08-25 15:31:46 · 3607 阅读 · 0 评论 -
关于for循环总是返回最后一个值问题
for (var i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); })}// 输出十个 10for (let j = 0; j < 10; j++) { setTimeout(function(){ console.log(j); })}// 输出 0123456789...原创 2018-08-25 15:23:25 · 22934 阅读 · 2 评论 -
Js选项卡(切换Tap栏)问题
css样式:点击按钮背景变色,显示对应的选项卡 <style> button.active{ background:#03ccbb; } .dis div{ width: 300px; height: 100px; line-hei...原创 2018-08-25 15:15:05 · 2698 阅读 · 0 评论 -
跟随鼠标移动-demo
定时器:为了测试图片延迟显示,更好看,会一直动 效果如下<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> span原创 2018-08-29 20:05:20 · 723 阅读 · 0 评论 -
JS解决DOM2级事件解绑兼容问题
attachEvent和detachEvent:处理IE低版本问题。 <script> function addEvent(ele,eventType,fn){ if(ele.addEventListener){//容错判断 ele.addEventListener(eventType,fn,false); }else{ ele.attac...原创 2018-08-29 19:49:35 · 585 阅读 · 0 评论 -
JS放大镜demo详细讲解
前言:此放大镜可直接改变图片(我是用的是zoom.jpg)使用。前提是必须跟我一样的布局,不然里面的clientX和offsetLeft得作出相应改动。前提先了解数学算法: 求遮罩层mask宽度 大图、大图显示区、小图、遮罩层 1、小图是大图等比缩放的 2、遮罩层是大图显示区缩放的 小图/大图 = 遮罩层/大图显示区 遮罩层 = ...原创 2018-08-29 19:39:08 · 7104 阅读 · 2 评论 -
浅谈作用域、变量提升、闭包与递归
前提:1.函数想要执行,就必须知道自身变量以及自身变量所在作用域中的位置。2.函数的运行取决于函数定义时所在的作用域,不取决于调用时的作用域。3.函数在作用域链中的变量访问遵循向上查找。(一)所谓作用域:变量的作用范围。1.在全局声明的变量具有全局作用域。2.在函数内声明的变量具有局部作用于。(二)变量提升:在程序编译阶段,作用域内的变量会被提升到当前作用域的顶部,且声...原创 2018-11-05 19:56:57 · 159 阅读 · 0 评论 -
e.target和e.currentTarget区别?
原创 2018-11-22 18:03:01 · 122 阅读 · 0 评论 -
数组根据某个键值的值进行升降排序
数组根据某个键值的值进行升降排序// 数组根据某个键值的值进行升降排序function compare( property, desc ) { return function ( a, b ) { var value1 = a[ property ]; var value2 = b[ property ]; if ( desc == tr...原创 2019-08-22 13:00:19 · 439 阅读 · 0 评论 -
js数组去重
js数组去重利用 Es6 新语法去重// 数组去重var arr = [];var x = new Set(arr);arr = [...x]; // 已去重原创 2019-08-22 12:56:33 · 179 阅读 · 0 评论 -
禁止js报错
禁止js报错添加如下代码:<script LANGUAGE="JavaScript"> function stopError() { return true; } window.onerror = stopError;</script>原创 2019-08-20 11:25:59 · 1102 阅读 · 0 评论 -
Js数组转对象(特殊格式)和 JS中将对象转化为数组
Js数组转对象(特殊格式)arr:[ { } ,{ },{ }] 转化为obj:{ { },{ },{ }}利用ES6语法:let obj = {...arr};原创 2019-07-26 12:37:20 · 4154 阅读 · 0 评论 -
普通表格操作列checkbox 复选框选中之后打印当前行当前行id
表格操作列checkbox 复选框选中之后打印当前行当前行id<%-- data-id为自定义属性,传入的是后台id --%><input type="checkbox" data-id="${xxx}"> <script>// 拿到所有含data-id属性的的inputvar arr = $("input[data-id]");// 遍历数...原创 2019-07-09 10:47:43 · 361 阅读 · 0 评论 -
回调函数传参
回调函数怎么传参?<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <s原创 2018-12-25 19:07:13 · 1637 阅读 · 0 评论 -
分页器的使用-2 手写一个分页器
有时候项目中要求分页器样式自定义时,就需要自己去手写一个分页器了,怎么做呢,直接上代码,具体详情已经在注释里写清楚了。注意: 1. currentPage、count、pageCount为全局变量 2. downloadData()函数第一次执行时,并不去进行if语句判断,自己看代码时可以直接从ajax请求看,因为if判断语句时在第二次执行时,也就是点击页码元素,进行回调时才执行的。 3...原创 2018-12-26 16:54:08 · 1673 阅读 · 0 评论 -
分页器的使用-1 自己找的分页器插件
这个插件是自己网上找的,具体代码如下:具体步骤: 1. 先引入css和js 2. 分页器放在请求成功之后, 3. 最重要的中间件就是currentPage:当前页码。 4. 具体代码详情都在里面写清楚了。&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta ch原创 2018-12-26 15:23:50 · 558 阅读 · 0 评论 -
Js拖拽demo
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 100px; height:原创 2018-08-29 19:32:24 · 537 阅读 · 0 评论