javascript小技巧-js小技巧收集
JS创建或填充任意长度数组的小技巧汇总

JS创建或填充任意长度数组的⼩技巧汇总⽬录前⾔直接填充法for 循环 push() 法Array 构造函数法在 Array 构造函数后⾯加上 fill() ⽅法使⽤ undefined 填充数组使⽤ Array.from() 进⾏映射⽤值填充数组使⽤唯⼀(⾮共享的)对象创建数组⽤升序整数数列创建数组⽤任意范围的整数进⾏创建另⼀种创建升序整数数组的⽅法使⽤ keys()总结前⾔在 JavaScript 开发中,经常需要有需要创建特性长度数组的场景,本⽂总结了⼏种创建或填充任意长度的数组的⼩技巧,学会了可以提升编程效率。
直接填充法采⽤最原始的⽅法,⼿动填充所需长度的数组。
const arr = [0,0,0];for 循环 push() 法和第⼀种⽅法差不多,只是使⽤ for 循环创建特定长度的数组var len = 3;var arr = [];for (let i=0; i < len; i++) {arr.push(0);}Array 构造函数法var len = 3;var arr = new Array(len);在 Array 构造函数后⾯加上 fill() ⽅法var len = 3;var arr = new Array(len).fill(0);如果你⽤对象作为参数去 fill() ⼀个数组,所有元素都会引⽤同⼀个实例(也就是这个对象没有被克隆多份,Array.from() 则没有这个问题):var len = 3;var obj = {};var arr = new Array(len).fill(obj);所以操作这个数组时应该⽐⽤构造函数创建的更快。
不过创建数组的速度⽐较慢,因为引擎可能需要随着数组的增长多次重新分配连续的内存。
使⽤ undefined 填充数组Array.from({length: 3}) // [ undefined, undefined, undefined ]下⾯这种⽅式仅适⽤于可迭代的值,并且与 Array.from()具有类似的效果:[...new Array(3)] // [ undefined, undefined, undefined ]使⽤ Array.from() 进⾏映射如果提供映射函数作为其第⼆个参数,则可以使⽤ Array.from() 进⾏映射。
js计算保留两位小数 精度计算方法

js计算保留两位小数精度计算方法在编程中,对于保留两位小数的精度计算,通常使用的是四舍五入的方式,将计算结果保留到指定的小数位数。
在JavaScript中,我们可以使用内置的方法来实现这一功能,这可以帮助我们在开发过程中处理数值类型的数据时保持精度。
在JavaScript中,有多种方法可以实现保留两位小数的精度计算。
下面将介绍一些常用的方法和技巧。
1. toFixed()方法:toFixed()方法是JavaScript中用于保留指定位数小数的方法。
它将数字四舍五入到指定的小数位数,并返回一个字符串表示此数字。
例如:```javascriptlet num = 3.14159;let roundedNum = num.toFixed(2);console.log(roundedNum); //输出3.14```这里,toFixed()方法将3.14159四舍五入到小数点后两位,并返回字符串"3.14"。
2.将数字乘以100后取整再除以100:这是一种比较简单的方法,将数字乘以100后取整,再将结果除以100即可实现保留两位小数的效果。
例如:```javascriptlet num = 3.14159;let roundedNum = Math.round(num * 100) / 100;console.log(roundedNum); //输出3.14```这里,我们将3.14159乘以100后取整得到314,再除以100得到3.14。
3.使用Number对象的toPrecision()方法:toPrecision()方法用于将数字格式化为指定的有效数字位数。
我们可以将有效数字位数设置为3,然后再将结果除以100即可实现保留两位小数的效果。
例如:```javascriptlet num = 3.14159;let roundedNum = (Math.round(num * 1000) /10).toPrecision(3);console.log(roundedNum); //输出3.14```这里,我们将3.14159乘以1000后取整得到3142,再除以10得到314.2,最后使用toPrecision(3)方法得到字符串"3.14"。
JS中常见获取随机数的方法

JS中常见获取随机数的方法在JavaScript中,有多种方法可以生成随机数。
下面我将介绍一些常见的方法:1. 使用Math.random(方法:Math.random(方法返回一个0到1之间的随机小数。
可以通过一些技巧将其转换为指定范围内的整数:```javascript//生成0到n之间的随机整数var randomNum = Math.floor(Math.random( * (n + 1));// 生成min到max之间的随机整数var randomNum = Math.floor(Math.random( * (max - min + 1)) + min;```2. 使用Date对象:Date对象的getTime(方法返回一个自1970年1月1日以来的毫秒数,可以使用该方法生成随机数:```javascript//生成当前时间戳//生成指定范围内的随机整数var randomNum = Math.floor(Math.random( * (max - min + 1)) + min;```3. 使用crypto.getRandomValues(方法:crypto.getRandomValues(方法是一个Web Crypto API中的方法,可以生成安全的随机数。
这种方法生成的随机数是真正的随机数,比Math.random(更加安全:```javascriptvar array = new Uint32Array(1);window.crypto.getRandomValues(array);var randomNum = array[0];```4.使用自定义的随机函数:除了使用内置的方法外,还可以编写自定义的随机函数,例如使用Fisher-Yates算法:```javascriptfunction shuffle(arr)var currentIndex = arr.length, temporaryValue, randomIndex;while (0 !== currentIndex)randomIndex = Math.floor(Math.random( * currentIndex);currentIndex -= 1;temporaryValue = arr[currentIndex];arr[currentIndex] = arr[randomIndex];arr[randomIndex] = temporaryValue;}return arr;//使用随机函数打乱数组顺序var randomArray = shuffle([1, 2, 3, 4, 5]);```5.使用第三方库:还可以使用一些第三方库来生成随机数,例如lodash库的random(方法:```javascript//生成0到n之间的随机整数var randomNum = _.random(n);// 生成min到max之间的随机整数var randomNum = _.random(min, max);```总结:以上是JavaScript中常见的获取随机数的方法。
JavaScript必备的断点调试技巧总结(推荐)

JavaScript必备的断点调试技巧总结(推荐)⽬录为什么要使⽤ debuggerChrome debugger 基本⽤法VS Code 调试 SPA 应⽤Chrome 调试 Nodejs使⽤ VS Code 调试 NodejsConditional Breakpoint 条件断点总结为什么要使⽤ debugger这篇⽂章将介绍如何使⽤断点来进⾏ JavaScript 调试。
在读这篇⽂章之前,需要问⼀个问题:为什么要使⽤断点来进⾏调试?我们需要了解使⽤断点的必要性,否则下⽂介绍的所有断点调试⽅法都会是废话。
console.log 是前端开发最常⽤的调试⼿段,它简单直接解决⼀部分问题。
但当遇到⼗分复杂的问题,console.log 就会变得不趁⼿。
⽐如:⼀个逻辑复杂的算法如果你刷过 leetcode ⼀定深有体会,算法某个测试⽤例报错了,有时很难光靠⽬测找出有问题的那个⽅法。
⼀个复现步骤⼗分繁琐的bug。
花了10分钟好不容易复现了,但是只跟踪到某⾏代码,需要第⼆次添加 log 才能继续寻找问题。
查看log -> 添加log -> 查看log... 这个过程重复⼏遍,今天剩下的砖就搬不完了。
⼀段运⾏流程冗长的代码⼀段没有注释、起名随意的代码server 端代码有 nodejs 服务端开发经验的同学相信有过 postman <-> ide 反复横跳的经历,如果光靠 log,对于⼀个巨⼤的复杂对象,控制台是不好查看全貌的。
如果⼀个接⼝还涉及到数据库增删、第三⽅依赖,那么复原上⼀次请求造成的后果也是⼀件痛苦的事情。
在这些情况下,断点调试是⾮常有价值的,将 debug 的时间复杂度从 O(n) 降到 O(1),让搬砖更快乐。
这是⽂章的内容⼤纲:Chrome debugger 基本⽤法VS Code 调试 SPA 应⽤Chrome 调试 NodejsVS Code 调试 NodejsChrome debugger 基本⽤法最简单的断点调试,就是在代码中加⼀句 debugger,然后到浏览器中刷新页⾯,这时候浏览器就会在 debugger 语句那停⽌执⾏。
js获取组数最小值的方法

js获取组数最小值的方法JavaScript是一种非常强大的编程语言,它被广泛应用于Web开发、移动应用开发、桌面应用开发等领域。
在JavaScript中,我们经常需要处理数据,而数据通常以数组的形式存在。
在处理数组时,我们可能会遇到需要获取数组中组数最小值的情况。
那么,如何使用JavaScript获取数组中组数最小值呢?本文将介绍一种简单有效的方法。
一、了解问题背景在处理数组时,我们通常需要统计数组中各个数值出现的次数,以了解数据分布情况。
如果数组中的数值按照一定的规律分组,那么我们可以通过统计每个组中的数值个数,来了解数据的分布情况。
为了方便统计,我们可以将数组中的数值按照一定的规则分组,并记录每个组的组数。
二、方法实现要获取数组中组数最小值,我们可以使用以下方法:1. 遍历数组,统计每个组中的数值个数;2. 找到数值个数最少的组数;3. 返回该组数作为最小值。
具体实现步骤如下:(1)定义一个函数,用于获取数组中组数最小值;(2)在函数中,使用for循环遍历数组,统计每个组中的数值个数;(3)使用if语句判断当前组数是否为最小值,如果是则将其保存到最小值变量中;(4)返回最小值变量作为结果。
下面是一个示例代码:```javascriptfunction getMinGroupCount(arr) {// 定义一个函数用于获取数组中组数最小值const minGroupCount = function(arr) {let minCount = Infinity;let minGroup = 0;for (let i = 0; i < arr.length; i++) {const count = arr[i] || 0; // 数组中的值为0时计数为0if (count < minCount) {minCount = count;minGroup = i + 1; // 统计组的数量时需要加上数组的起始下标}}return minGroup;};// 调用函数获取数组中组数最小值并返回结果return minGroupCount(arr);}```三、应用示例下面是一个应用示例:```javascriptconst arr = [1, 2, 3, 4, 2, 3, 5, 6, 7]; // 一个包含多个重复值的数组const minGroupCount = getMinGroupCount(arr); // 调用函数获取组数最小值console.log(minGroupCount); // 输出结果为3,表示数组中有3个组数的数值个数最少```通过以上示例代码,我们可以看到使用JavaScript获取数组中组数最小值的方法非常简单有效。
js将小数转为百分数并保留2位小数的方法

js将小数转为百分数并保留2位小数的方法在JavaScript中,将小数转换为百分数是一个相对简单的操作,但还需要注意保留指定位数的小数。
以下是一个详细的指南,介绍如何将小数转换为百分数并保留两位小数。
### 导语在网页开发中,我们经常会遇到需要将数值转换为百分数的需求。
这不仅仅是展示数据的一种方式,也常用于计算和数据处理。
本文将介绍如何使用JavaScript将小数转换为百分数并保留两位小数。
### 方法步骤1.**获取小数值**:首先,你需要有一个小数值。
例如,假设我们有一个变量`decimalNumber` 存储了小数值。
```javascriptlet decimalNumber = 0.12345;```2.**转换为百分数**:将小数转换为百分数,需要将其乘以100,并在后面加上百分号`%`。
```javascriptlet percentage = decimalNumber * 100 + "%";```3.**保留两位小数**:使用`toFixed()` 方法可以保留两位小数。
这个方法会返回一个字符串,表示指定小数点后几位的数字。
```javascriptlet percentage = (decimalNumber * 100).toFixed(2) + "%";```4.**转换为数字(可选)**:如果你需要进一步在代码中使用这个值进行计算,可能需要将结果转换回数字类型。
```javascriptlet percentageNumber = Number((decimalNumber *100).toFixed(2));```### 完整示例代码以下是上述步骤的完整示例代码:```javascript// 假设的小数值let decimalNumber = 0.12345;// 转换为百分数并保留两位小数let percentage = (decimalNumber * 100).toFixed(2) + "%";// 输出结果console.log(percentage); // 输出"12.35%"```### 注意事项- `toFixed()` 方法返回的是一个字符串,如果需要后续进行数学计算,请使用`Number()` 函数将其转换回数字。
js字符串变量拼接技巧

js字符串变量拼接技巧JavaScript字符串变量拼接技巧是在使用JavaScript时非常有用的一项技巧,它可以帮助我们更有效地处理字符串。
本文将介绍JavaScript字符串变量拼接技巧,帮助大家更高效地编写JavaScript程序。
1、什么是JavaScript字符串变量拼接技巧JavaScript字符串变量拼接技巧是指在JavaScript编程中,利用字符串变量的拼接操作,将多个字符串变量拼接成一个字符串变量的方法。
这种技巧可以有效地减少编写JavaScript程序时的时间和空间开销,提高编程效率。
2、JavaScript字符串变量拼接的方法(1)使用“+”运算符拼接。
这是最常用的拼接方法,使用“+”运算符,可以将多个字符串变量拼接成一个字符串变量,例如:var str1 = "Hello";var str2 = "World";var str3 = str1 + str2; //str3 = "HelloWorld"(2)使用字符串连接符拼接。
字符串连接符是用来将多个字符串变量连接成一个字符串变量的符号,例如:var str1 = "Hello";var str2 = "World";var str3 = str1 + " " + str2; //str3 = "Hello World"(3)使用字符串模板拼接。
ES6中引入了字符串模板,可以使用字符串模板来将多个字符串变量拼接成一个字符串变量,例如:var str1 = "Hello";var str2 = "World";var str3 = `${str1} ${str2}`; //str3 = "Hello World"(4)使用字符串方法拼接。
js 提取判断条件 开关控制

js 提取判断条件开关控制1.引言1.1 概述JavaScript(简称为JS)是一种广泛应用于网页开发中的脚本语言。
它被用于为网页增加动态、交互和特效等功能,使得网页更具生动性和用户友好性。
从简单的表单验证到复杂的网页应用,JavaScript无疑是一种不可或缺的编程语言。
在JavaScript中,我们常常需要根据不同的条件来执行相应的代码块。
而提取判断条件和开关控制是JS中非常重要的一部分。
通过使用条件语句和开关语句,我们能够根据特定的条件来决定程序的执行流程,从而实现不同的功能和效果。
条件语句包括if语句、else语句和else if语句等,它们能够根据给定的条件执行相应的代码块。
通过判断条件的真假,程序可以选择性地执行不同的代码逻辑。
开关语句则主要用于在多个选项中选择执行特定的代码块,比如使用switch语句可以根据不同的选项执行不同的操作。
在本篇文章中,我们将重点讨论如何使用JavaScript提取判断条件和进行开关控制。
我们将介绍条件语句和开关语句的基本用法,并通过实例演示它们的应用场景和技巧。
同时,我们还将深入探讨一些高级的判断条件和开关控制技巧,以帮助读者更好地理解和运用这些知识。
尽管条件语句和开关语句看起来很简单,但它们却是编写高效、灵活的JavaScript程序的核心。
熟练掌握这些知识将使我们能够更好地处理各种复杂的业务逻辑和需求。
希望通过本篇文章的阅读,读者能够对JavaScript中提取判断条件和开关控制有更深入的理解,并能够灵活运用它们解决实际问题。
1.2文章结构1.2 文章结构本文将围绕JavaScript中提取和判断条件来进行开关控制的内容展开讨论。
主要分为引言、正文和结论三个部分。
在引言部分,我们将概述本文的主题和目的,介绍JavaScript中提取和判断条件的重要性以及应用场景。
同时,我们将简要介绍本文的结构和各个部分的内容安排,为读者提供一个整体的概览。
正文部分将分为两个要点进行讨论。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
javascript小技巧-js小技巧收集(转)javascript小技巧-js小技巧收集(转)每一项都是js中的小技巧,但十分的实用!1.docum ent.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:docum ent->ht m l->(head,body)4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,docum ent)5.得到表单中元素的名称和值:docum ent.getElem entById("表单中元素的ID号").name(或value)6.一个小写转大写的JS: docum ent.getElementById("output").value =docum ent.getElement ById("input").value.toUpperCase();7.JS中的值类型:String,Number,Boolean,Null,Object,Function8.JS中的字符型转换成数值型:parseInt(),parseFloat()9.JS中的数字转换成字符型:(""+变量)10.JS中的取字符串长度是:(length)11.JS中的字符与字符相连接使用+号.12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=13.JS中声明变量使用:var来进行声明14.JS中的判断语句结构:if(condition){}else{}15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}16.循环中止的命令是:break17.JS中的函数定义:function functionName([parameter],...)18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self20.状态栏的设置:window.status="字符";21.弹出提示信息:window.alert("字符");22.弹出确认框:window.confirm();23.弹出输入提示框:window.prompt();24.指定当前显示链接的位置:window.location.href="URL"25.取出窗体中的所有表单的数量:docum ent.forms.length26.关闭文档的输出流:docum ent.close();27.字符串追加连接符:+=28.创建一个文档元素:docum ent.createElem ent(),docum ent.createTextNode()29.得到元素的方法:docum ent.getElement ById()30.设置表单中所有文本型的成员的值为空:var form = window.docum ent.forms[0]for (var i = 0; i if (form.elements.type == "text"){form.elements.value = "";}}31.复选按钮在JS中判断是否选中:document.form s[0].checkThis.checked (checked属性代表为是否选中返回T RUE或FALSE)32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度docum ent.forms[0].groupName.length33.单选按钮组判断是否被选中也是用checked.34.下拉列表框的值:docum ent.forms[0].selectNam e.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值)35.字符串的定义:var m yString = new String("This is lightsword");36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.38.取字符串中指定位置的一个字符:StringA.charAt(9);39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n+1))返回随机数41.定义日期型变量:var today = new Date();42.日期函数列表:dateObj.getTim e()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设置秒[注意:此日期时间从0开始计]43.FRAME的表示方式:[window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarNam e,frameName.ObjFuncVarName44.parent代表父亲对象,top代表最顶端对象45.打开子窗口的父窗口为:opener46.表示当前所属的位置:this47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名48.在老的浏览器中不执行此JS:49.引用一个文件式的JS:50.指定在不支持脚本的浏览器显示的HTML:51.当超链和onCLICK事件都有时,则老版本的浏览器转向a.ht ml,否则转向b.ht ml.例:dfsadf52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError, ReferenceError,RegExp,String,SyntaxError,TypeError,URIError53.JS中的换行:\n54.窗口全屏大小:55.JS中的all代表其下层的全部元素56.JS中的焦点顺序:docum ent.getElem entByid("表单元素").tabIndex = 157.innerHTML的值是表单元素的值:如"how are you",则innerHTML的值就是:how are you58.innerTEXT的值和上面的一样,只不过不会把这种标记显示出来.59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.60.isDisabled判断是否为禁止状态.disabled设置禁止状态61.length取得长度,返回整型数值62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc63.window.focus()使当前的窗口在所有窗口之前.64.blur()指失去焦点.与FOCUS()相反.65.select()指元素为选中状态.66.防止用户对文本框中输入文本:onfocus="this.blur()"67.取出该元素在页面中出现的数量:docum ent.all.tags("div(或其它HTML标记符)").length68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.';70.添加到收藏夹:external.AddFavorite(""t;,"jaskdlf");71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.73.JS中的self指的是当前的窗口74.JS中状态栏显示内容:window.status="内容"75.JS中的top指的是框架集中最顶层的框架76.JS中关闭当前的窗口:window.close();77.JS中提出是否确认的框:if(confirm("Are you sure?"))else{alert("Not Ok");}78.JS中的窗口重定向:window.navigate(""t;);79.JS中的打印:window.print()80.JS中的提示输入框:window.prompt("message","default Reply");81.JS中的窗口滚动条:window.scroll(x,y)82.JS中的窗口滚动到位置:window.scrollby83.JS中设置时间间隔:setInterval("expr",msec Delay)或setInterval(func Ref,m secDelay)或setTim eout84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}} window.onbeforeunload=verifyClose;86.当窗体第一次调用时使用的文件句柄:onload()87.当窗体关闭时调用的文件句柄:onunload()88.window.location的属性:protocol(http:),hostnam e(),port(80),host(e:80),pathname("/a/a.ht ml"),hash("#giant Gizmo",指跳转到相应的锚记),href(全部的信息)89.window.location.reload()刷新当前页面.90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL)91.document.write()不换行的输出,docum ent.writeln()换行输出92.document.body.noWrap=t rue;防止链接文字折行.93.变量名.charAt(第几位),取该变量的第几位的字符.94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值.95.字符串连接:string.concat(string2),或用+=进行连接96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0开始计算)stIndexOf(searchString[,startIndex])最后一次出现的位置.98.string.match(regExpression),判断字符是否匹配.99.string.replace(regExpression,replaceString)替换现有字符串.100.string.split(分隔符)返回一个数组存储值.101.string.substr(start[,length])取从第几位到指定长度的字符串.102.string.toLowerCase()使字符串全部变为小写.103.string.toUpperCase()使全部字符变为大写.104.parseInt(string[,radix(代表进制)])强制转换成整型.105.parseFloat(string[,radix])强制转换成浮点型.106.isNaN(变量):测试是否为数值型.107.定义常量的关键字:const,定义变量的关键字:var--------------------------------------------------------------------------------------------------------------------------------javascript38种小技巧,推荐新手查看。