javascript/es6/es7
javascript相关包括es6,es7等
_必应
不用害怕问题,有些问题可能并没有想像中的那么困难,可能最后发现只是不小心碰到了键盘呢!
展开
-
实现页面内容变化后自动滚动
【代码】实现页面内容变化后自动滚动。原创 2024-01-26 11:27:23 · 155 阅读 · 0 评论 -
javascript 链表与数组互转
javascript 链表与数组互转,链表概念的理解原创 2023-02-01 15:47:04 · 474 阅读 · 0 评论 -
力扣:检查句子中的数字是否递增
每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词。示例,“a puppy has 2 eyes 4 legs” 是一个由 7 个 token 组成的句子:“2” 和 “4” 是数字,其他像 “puppy” 这样的 tokens 属于单词。给你一个表示句子的字符串 s ,你需要检查 s 中的 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 中的 每个 数字都严格小于它 右侧 的数字)。重新排序后和去重的数组 json序列化比对。原创 2023-01-03 16:50:56 · 83 阅读 · 0 评论 -
图表:数据量级差异大的处理
如果各个特征的取值范围差别很大,会导致数量量小的数据会显示为一条近似直线.而你的模型对取值范围的差别又比较敏感,可以考虑归一化或者使用对数折线图原创 2022-11-14 15:42:41 · 2041 阅读 · 0 评论 -
给定一个数,使用reduce找出数组中最接近元素的位置
给定目标数,使用reduce找出数组中最接近元素的位置。a原创 2022-08-16 17:20:11 · 303 阅读 · 0 评论 -
计算dom渲染完成所需时间
当超长页面时,进入页面滚动条不在最顶部的处理。实现原理: onload事件监听。原创 2022-08-12 15:07:11 · 1981 阅读 · 0 评论 -
umijs 下载文件
umijs项目中使用下载功能,下载使用文件流方式原创 2022-07-04 14:19:49 · 905 阅读 · 0 评论 -
js面试之随机数组每8个字符长度进行分割
示例数组const arr = [ 1234, 1234, 1234567, 12, 12, 12, 123456789999, 456, 9345, 56798987, 9999999999];分割结果const newArr = [ [ '1234', '1234' ], [ '1234567' ], [ '12', '12', '12' ], [ '123456789999' ], [ '456', '9345' ], [ '56798987' ], [ '99999原创 2022-03-27 16:48:07 · 1785 阅读 · 0 评论 -
对象数组按照自定义的顺序排序
数组按照自定义的顺序排序// 自定义顺序let order = ['其他', '0']; // 测试数据1let order2 = ['0', '其他']; // 测试数据2let tableData = [{ name: '0' }, { name: '其他' }];// sort 根据索引排序tableData = tableData.sort((a, b) => { return order.indexOf(a.name) - order.indexOf(b.name);原创 2021-12-07 17:52:08 · 320 阅读 · 0 评论 -
js使用银行家舍入法导四舍五入不准确的处理方法
处理方法会不准确的一些数字 10.155 / 20.155/** * toFixed精度不准自动补零 * @param {string,int} num value * @param {int} s 保留几位 */ export const toFixed = (num, s) => { const times = Math.pow(10, s); let des = num * times + 0.5; des = des.toFixed(2)原创 2021-09-07 18:23:49 · 290 阅读 · 0 评论 -
js 金额格式化 toLocaleString方法
当需要把一串数据格式化为千分位并保留指定位数时,可以使用js的toLocaleString()方法,还可以自动补上0进行占位,默认保留两位小数,可自行位数var num = 1234.2345num.toLocaleString(‘zh’, {style:‘currency’, currency: ‘CNY’, minimumFractionDigits: 2});// “¥1,234.23”0.14*100 = 14.0000000000000020.1+0.2 = 0.300000000000原创 2021-03-31 15:21:16 · 2472 阅读 · 0 评论 -
数组互斥选择(列表中多个下拉框互斥选择)
有时候我们会有这样的需求,需要遍历多个相同的下拉框,且已选择的下拉选项不能被再次选择,此时我们就需要把已选择进行禁用!第一步、这时我可以定义一个数组来存储已选择项,定义一方法changeArr从原始数组中改变已选择项为禁用状态。第二步、当下拉框值改变时调用方法changeTempArr更改并获取新的已选择项,再次调用changeArr改变新的已选择项为禁用状态。var arr = [ { code: '1', name: 'fff1' }, { code: '2', name: 'fff2'原创 2021-01-14 15:00:25 · 1379 阅读 · 0 评论 -
求两条直线的交点坐标
业务中需要计算两条折线图的交点坐标,假设折线图仅有一个交点的情况,先求出x轴位置差最小(绝对值)的坐标,再分别拿前一个节点,求出坐标,如果没有求出,则取下一个节点进行计算交点坐标方法(涉及求线段交点的几何计算)参考:谈谈"求线段交点"的几种算法(js实现,完整版)/** * 顺序无关,ab,cd为线段 * @param {*} a 线段ab起点坐标 * @param {*} b 线段ab终点坐标 * @param {*} c 线段cd起点坐标 * @param {*} d 线段ab原创 2020-08-07 18:13:36 · 7044 阅读 · 0 评论 -
递归实现多级菜单遍历,附antd的menu实现方案
递归实现的方法,通过是否包含children决定是否需要递归调用/** * * @param { 路由列表 } data * @param { 从地址栏获取的路由 } pathKey * openKey是添加的是否展开父菜单的参数 */const initKey = (data, pathKey) => { const list = []; const key = null; const getList = data => { data.map(item =&g原创 2020-07-08 10:31:53 · 4014 阅读 · 0 评论 -
RGB 转 Hex 和 Hex 转 RGB
hex转rgb颜色const hexToRgb = hex => { const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16).toString(), g: parseInt(result[2], 16).toString(), b: parseInt(result[转载 2020-06-03 09:44:20 · 406 阅读 · 0 评论 -
正则去掉中英文逗号及空格
// 转换中文逗号及去掉空格const str = "张三, 李四 ,王五,tom, jack ,lucy "const newStr = str.replace(/,/, ',').split(',').map(item => item.trim()).join(',');console.log(newStr);原创 2020-05-22 17:04:39 · 1792 阅读 · 2 评论 -
数组中相同属性值进行分组,支持补全(含区间日期枚举方法),可实现ant desgin 动态列
开发中遇到数组有多个属性相同的的对象需要合并为一个对象,并生成新的数组,用以实现ant desgin 的动态列功能。耗费了一天时间。整理下实现的逻辑const dates = [ '2020-04-20', '2020-04-21', '2020-04-22', '2020-04-23', '2020-04-24', '2020-04-25', '2020-04...原创 2020-04-30 19:46:57 · 346 阅读 · 0 评论 -
数组find方法查找的对象不存在
数组find方法使用时的问题在查询数组中某个对象,并获取对象的属性值时报错导致整个页面打不开的问题const array1 = [{id: 1, name: 2},{id: 3, name: 4} ];const found = array1.find(element => element.id === 2).name // 输出undefined;console.log(foun...原创 2020-04-14 16:12:05 · 2078 阅读 · 0 评论 -
数组按照中文名称排序
var arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortChinese (arr) { // 参数: 排序的数组 arr.sort(function (item1, item2) { return item1.localeCompare(item2, 'zh-CN'); }) } sortChinese(arr) ...原创 2020-03-06 14:43:46 · 1734 阅读 · 0 评论 -
过滤对象数组中key值相同的数据(数组合并去重)
如果有遇到一个数组中存储多个对象,有部分对象的某一个键值是相同的,需要过滤掉重复项的实现方案const arr =[ { "count": 1095, "month": "三月", }, { "count": 1106, "month": "三月", }, { "count": 987, "month": "四月", },...原创 2020-03-06 14:41:27 · 5586 阅读 · 0 评论 -
正则表达式去掉字符串中的特殊字符
/***去掉字符串中的特殊字符*/var excludeSpecial = function(s) {// 去掉转义字符s = s.replace(/[’"\/\b\f\n\r\t]/g, ‘’);// 去掉特殊字符s = s.replace(/[@#$%^&*{}:"\L<>?]/);return s;};function main(){var s...原创 2020-03-06 14:18:19 · 14378 阅读 · 0 评论 -
es6踩坑
es 的import 和import {} from 的区别 export default 可随意命名 export { onlyOne } 对应的在import时,自然也要用{}把他import进来呀,而且名字要一字不差不能写错 import { onlyOne } form ‘path/to/module’至于为什么能 import lodash form ‘lodash’ 是因...原创 2018-08-31 16:32:13 · 459 阅读 · 0 评论 -
Generators / yield (es2015) 和 Async / await(es7
Generators / yield (es2015) 和 Async / await(es7)function* foo () { var index = 0; while (index 2) { yield index++; }}var bar = foo();console.log(bar.next()); // { value: 0, don原创 2018-01-10 21:48:38 · 734 阅读 · 0 评论 -
es6的理解
es6 理解及特性原创 2016-08-08 14:51:06 · 1224 阅读 · 0 评论 -
二维数组的url字符串拼接
[[‘a’,1],[‘b’,2]].map(param => param.join("=")).join("&")返回 a=1&b=2原创 2019-10-14 10:38:18 · 600 阅读 · 0 评论 -
firebug控制台函数详解
console.log() 向控制台输出一个信息console.debug() 输出一个信息,并包含超链接到输出位置console.info() 输出一个还带信息图标和背景颜色的信息console.warn() 输出一个还警告图标和背景颜色的信息,并有超链接到信息输出位置console.error() 输出一个带错误图标和背景颜色的信息,并有超链接到输出位置console.as...原创 2012-03-14 10:20:15 · 408 阅读 · 0 评论 -
判断低版本浏览器
// 获取火狐版本 getBrowserInfo: function () { var agent = navigator.userAgent.toLowerCase(); var regStrff = /firefox\/[\d.]+/gi; if (agent.indexOf('firefox') > 0) { return agent.match(...原创 2018-09-21 15:39:05 · 540 阅读 · 0 评论 -
实现文件上传进度条及解决request.upload.addEventListener in not a function问题
使用axios上传文件时需要进度条,可通过监听axios的onUploadProgress获取当前文件上传进度,进度条可以用antd的Progress实现过程中出现问题request.upload.addEventListener in not a function。参考南柯一梦的博客https://www.cnblogs.com/leeke98/p/10491358.html原来和mock...原创 2019-09-30 15:35:17 · 8051 阅读 · 6 评论 -
判断是不是对象
判断是不是对象 typeof不准确//方法一var arr = [];var obj = new Object();typeof obj === 'object' //true//方法二arr instanceof Object //truearr instanceof Array //true方法一二都不严谨//方法三var s = 'a string';var arr...转载 2018-09-21 16:40:03 · 3198 阅读 · 0 评论 -
js删除数组中的空值
filter 过滤方法var arr = ['A', '', 'B', null, undefined, 'C', ' '];var r = arr.filter(function (s) { return s &amp;&amp; s.trim(); // 注:IE9(不包含IE9)以下的版本没有trim()方法});arr; // ['A', 'B', 'C']splic...转载 2018-09-21 16:28:55 · 51859 阅读 · 4 评论 -
JS数组求并集,交集和差集
es7: filter结合includes // 并集 let union = a.concat(b.filter(v => !a.includes(v))) // [1,2,3,4,5] // 交集 let intersection = a.filter(v => b.includes(v)) // [2] // 差集 let difference...转载 2018-09-21 16:25:23 · 646 阅读 · 0 评论 -
js数组方法
// 数组包含 isContain: function (arr1, arr2) { for (var i = arr2.length - 1; i >= 0; i--) { if (!arr1.includes(arr2[i])) { return false; } } return true; },...原创 2018-09-21 16:15:32 · 114 阅读 · 0 评论 -
js日期函数
日期格式化// 时间格式化Date.prototype.Format = function(fmt) { var o = { 'M+': this.getMonth() + 1, // 月份 'd+': this.getDate(), // 日 'h+': this.getHours(), // 小时 'm+': this.getMinutes(), // ...转载 2018-09-21 15:57:52 · 948 阅读 · 0 评论 -
sort排序-1和1的区别
这个是sort方法里的那个比较函数的特殊的返回值,比较函数的参数 a 和 b 代表数组里的两个元素,如果 a 小于 b,排序后的数组 a 在 b 前面,此时返回一个负数 (即上面的 return -1)如果 a 等于 b,排序后两者位置不变,此时返回 0 (即上面的 return 0)如果 a 大于 b,排序后 a 在 b 后面, 返回一个正数 (即上面的 return 1)//比较函数一般简写...转载 2018-09-21 15:30:42 · 9486 阅读 · 0 评论 -
js对象拷贝
对象拷贝assign嵌套的对象不能复制 只拷贝一级对象,可循环实现可转换为json对象进行拷贝,再转换为普通对象深拷贝与浅拷贝的区别深拷贝方法一:递归function deepClone(obj){ let objClone = Array.isArray(obj)?[]:{}; if(obj &amp;&amp; typeof obj==="object"){ ...转载 2018-09-21 15:02:03 · 96 阅读 · 0 评论 -
判断浏览器版本并给出升级提示
(function (window) { function getBrowserInfo () { var agent = navigator.userAgent.toLowerCase() var regStrff = /firefox\/[\d.]+/gi if (agent.indexOf('firefox') &gt; 0) { return ag...原创 2018-08-31 16:26:53 · 3105 阅读 · 0 评论 -
javasrcipt 代码片段
修改key值var key = 'abc';var obj = {key : '值'}; // 复制原来的值obj[key] = obj['key'];// 删除原来的键delete obj['key'];// 检查效果alert(obj.abc);滚动到指定位置$('a').click(function () { $("html,body").anima原创 2016-04-26 19:02:17 · 725 阅读 · 0 评论 -
返回时间只有秒如何转换为时分秒显示
返回时间只有秒如何转换为时分秒显示function formatSeconds(value) { var theTime = parseInt(value); // 秒 var theTime1 = 0; // 分 var theTime2 = 0; // 小时 // alert(theTime); if (theTime > 60) { theTime1原创 2018-01-10 21:30:47 · 1172 阅读 · 2 评论 -
比较两个对象的值是否相等
方法一: 遍历对象属性值hasChange: false,compareForm(nowVal) { var oldVal = this.copyForm for (const i in nowVal) { if (nowVal[i] !== oldVal[i]) { this.hasChange = true break } else { ...原创 2018-11-29 15:14:16 · 4055 阅读 · 0 评论 -
pdf.js用iframe方式时不能全屏的处理方法
引入pdf.js,调用时改变iframe的src全屏方案viewer.js // iframe会没有全屏,所以隐藏 // if (!PDFViewerApplication.supportsFullscreen) { // appConfig.toolbar.presentationModeButton.classList.add('hidden'); // appCon...原创 2018-11-29 16:00:36 · 2924 阅读 · 0 评论