随笔分类 - JavaScript
JavaScript
摘要:JavaScript 中的 `for...in` 循环和 `for...of` 循环是两种不同的迭代方式,用于遍历数据结构中的元素。它们具有一些区别: 1. `for...in` 循环: - 用于遍历对象的可枚举属性(包括原型链上的属性)。 - 迭代的是键(属性名),而非值。 - 不保证迭代顺序,因
阅读全文
摘要:js克隆一个对象 对象类型在赋值的过程中其实是复制了地址,所以如果改变了一方,其他都会被改变。那么如何克隆一个对象呢? 一、Object.assign function copy(obj) { return Object.assign({}, obj) } 二、… 运算符 function copy
阅读全文
摘要:问题描述 项目开发过程中需要生成一段脚本,并执行试算,所以使用了eval,eslist警告可以通过 // eslint-disable-next-line 解决。 但是Vulnerabilities警告无法避免。 问题解决 定义一个公共方法 eval2 使用方法和eval一样。 export con
阅读全文
摘要:问题描述 打开eslint 在一个switch语句中定义了一个变量就报错了 Unexpected lexical declaration in case block(no-case-declarations) // 该规则禁止词法声明 (let、const、function 和 class) 出现在
阅读全文
摘要:Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值。 let p1 = new Promise(function(resol
阅读全文
摘要:js常用工具类 lodash 一个一致性、模块化、高性能的 JavaScript 实用工具库。 ramda 一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具 day.js 一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 AP
阅读全文
摘要:问题描述 在写一个递归方法后发现一个问题,该递归方法在一个watch监听字段中调用,于是就报了如下错误: Error in callback for watcher 'filterTxt'. list.forEach is not a function 问题解决 第一个callback的问题可能是监
阅读全文
摘要:1. 问题描述: 代码上线后出现问题,有一个提交按钮无法点击,原因是在提交方法中多了一条 return false 语句。 那么如何通过Chrome中的控制台在source中设置断点调试实现该功能呢? submit: function() { let _this = this return fals
阅读全文
摘要:问题描述: 需求要求通过日期组件选择一个日期区间,返回的值类似 [2020-01-01, 2020-05-31],现在的问题是设置组件type="month"返回的数据是[2020-01-01, 2020-05-01] 这个问题就变成了如何将‘2020-05-01’变化为‘2020-05-31’ 解
阅读全文
摘要:首字母大写js方法 // 方法1 (Vue 2.x 版本中使用过该方法) function capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1) } // 方法2 -- 使用replace function capit
阅读全文
摘要:问题描述: 后台返回的金额数据有4位小数的,有没有小数的,要求前端展示出保留两位小数的金额格式 返回的数据: [{ amount: 500000, income: 237698.0255, count: 7, num: 7, date: '2020' }] 解决方法: // 格式化金额数字 form
阅读全文
摘要:父子关系的数组和树形结构数据相互转化 /** * @description 父子关系的数组转换成树形结构数据 * @param data * @returns {*} */ export function translateDataToTree(data) { const parent = data
阅读全文
摘要:问题描述 字符串补0是常见的需求,比如日期不足2位补0,数字精度不足补0等,需求是给一个数字和一个小数精度返回一个带有特定精度的数字字符串 问题分析 字符串补0操作可以考虑切割字符串操作,参考:substr() 方法 问题解决 先看一个日期补0的方法: function padStart(str){
阅读全文
摘要:问题描述: 风靡全球的凯撒密码Caesar cipher,又叫移位密码。 移位密码也就是密码中的字母会按照指定的数量来做移位。 一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。 写一个ROT13函数,实现输入加密字符串,输出解密字符串。
阅读全文
摘要:问题描述: 实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。 参考: Arguments object Array.filter() 解决方法: function destroyer() { var arr = arguments[0]; var b = A
阅读全文
摘要:问题描述: 把一个数组arr按照指定的数组大小size分割成若干个数组块。 例如:chunk([1,2,3,4],2)=[[1,2],[3,4]]; chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]]; 参考资源: Array.push() Array.slice() 解决
阅读全文
摘要:问题描述: 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。 切记,插入到字符串尾部的三个点号也会计入字符串的长度。 但是,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。 参考资源: String.slice() 解决方法: function trunc
阅读全文
摘要:问题描述: 判断一个字符串(str)是否以指定的字符串(target)结尾。 如果是,返回true;如果不是,返回false。 参考资源: String.substr() 解决方法: function confirmEnding(str, target) { // return str.endsWi
阅读全文
摘要:问题描述: eg:[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]] 大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。 参考资源: Comparison Oper
阅读全文
摘要:问题描述: 确保字符串的每个单词首字母都大写,其余部分小写。 像'the'和'of'这样的连接符同理。 参考资源: String.split() 解决问题: function titleCase(str) { var sa = str.split(' '); var s = sa.map(funct
阅读全文