常用的JavaScript方法记录

离线安装vue脚手架,内网安装@vue/cli 公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta 阅读详情

1、时间格式化

/**
 * 时间格式化
 * @param fmt 格式:例如 yyyy-MM-dd HH:mm:ss
 * @param date 时间
 * @return {*} 返回格式后的时间字符串 如 2020-03-29 18:34:09
 */
function dateFormat(fmt, date) {
  let ret;
  const opt = {
    "y+": date.getFullYear().toString(), // 年
    "M+": (date.getMonth() + 1).toString(), // 月
    "d+": date.getDate().toString(), // 日
    "H+": date.getHours().toString(), // 时
    "m+": date.getMinutes().toString(), // 分
    "s+": date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
  };
  for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
    }
  }
  return fmt;
}
/**
 let date = new Date();
 dateFormat("yyyy/MM/dd HH/mm/ss", date);
 dateFormat("yyyy-MM-dd HH:mm:ss", date);
 dateFormat("HHmmss", date);
 dateFormat("yyyyMMdd", date);
 */

2、判断是否是数字类型

/**
 * 判断是否是数字
 * @param val
 * @returns {boolean}
 */
function isRealNumber(val) {
    if (!val) {
        return false;
    }
    if (typeof val === 'number') {
        return true;
    }
    let reg = /^-?\d+(\.\d+)?$/;
    return reg.test(val);
}

3、异步

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

async function asyncCall() {
  console.log('calling');
  let result = await resolveAfter2Seconds();
  console.log(result);
  // expected output: 'resolved'
}

asyncCall();

4、对象数组排序

/**
 * 按某个属性排序数组,使用方法 list.sort(compareByProp('age'))
 *
 *  如果是多级对象,则可传递多个参数 如按对象req中reqItem对象的age属性排序 req.reqItem.age,则参数为 ['reqItem','age']
 * @param props 单个属性字符串或字符串数组(多级对象)
 * @param desc 是否需要递减排序,默认false,递增排序
 * @returns {(function(*, *): number)|(function(*, *): number)}
 */
function compareByPro(props, desc) {
    if (desc === undefined) {
        d
    }
    if (Array.isArray(props) && props.length > 0) {
        return function (obj1, obj2) {
            let value1 = obj1;
            let value2 = obj2;
            for (let i = 0; i < props.length; i++) {
                let p = props[i];
                value1 = value1[p];
                value2 = value2[p];
            }
            return desc ? (value2 - value1) : (value1 - value2)
        }
    } else {
        return function (obj1, obj2) {
            return desc ? (obj2 - obj1) : (obj1 - obj2)
        }
    }
}

5、判断字符串与子串

  • substr(start [,length])方法

    if("hello world".substr(0, 2) === "he"){}
    
  • substring(start [, end])方法

    if("hello world".substring(1, 3) === "ell"){}
    
  • slice(beginIndex[, endIndex])方法

    if("hello world".slice(1,3) === "ell"){}
    
  • indexOf(beginIndex[, endIndex])方法

    if("hello world".indexOf("hello") === 0){}
    

6、数组遍历

  • forEach(): 循环数组,不会改变元素,不会返回新数组

    arr.foreach((value,index)=>{console.log(value, index)})
    
  • map(): 遍历数组,对每个元素进行处理,之后返回元素;会返回一个新数组。

    let arr2 = arr.map((value,index)=>{let newVal = value+1; return newVal})
    
  • some(): 遍历数组,在回调函数里进行条件的判断,返回 true 或 false 。当有一个元素满足条件时就停止遍历并返回true;当全部的元素都不满足要求时,返回false

    let bool = arr.some((value,index)=>{return value>3})
    
  • every(): 遍历数组,同上。当有一个元素不满足条件时就停止遍历并返回false;当全部元素都满足时,返回true

    let bool = arr.every((value,index)=>{return value > 3})
    
  • filter(): 遍历数组,在回调函数里进行条件判断,当结果为true时,将该元素返回,组成一个新数组。

    let arr2 = arr.filter((value,index)=>{return value > 3})
    
  • reduce(): 归约

    /** * * @param preValue 必须,上一次返回的值 * @param currentValue 必须,当前遍历的数组元素 * @param currentIndex 可选,当前遍历的数组元素下标 * @param arr 可选,当前元素所属的数组 * @param initialValue 可选,初始值,将作为第一次遍历时preValue的值, *          若没有initialValue,则会少一次遍历(首次遍历时,将从第二个元素开始, *          此时preValue取数组的第一个元素,currentValue取数组的第二个元素,currentIndex从1开始) */array.reduce(function(preValue, currentValue, currentIndex, arr), initialValue)
    
    let arr = [1, 2, 3, 4, 5, 6, 7]arr.reduce((pre, cur, idx, arr1) => {    console.log(pre, cur, idx)    return cur * 2}, 10)/* 10 1 02 2 14 3 26 4 38 5 410 6 512 7 6 */
    
    let arr = [1, 2, 3, 4, 5, 6, 7]arr.reduce((pre, cur, idx, arr1) => {    console.log(pre, cur, idx)    return cur * 2})/*1 2 14 3 26 4 38 5 410 6 512 7 6*/
    

7、对象深浅复制

(1)浅复制

简单对象的复制:

let obj1 = { foo: "foo", bar: "bar" };let obj2 = { hello: "world" };// 使用扩展运算符let copy1 = { ...obj1, ...obj2};// 或使用Object.assign(target, source1, source2...)let copy2 = Object.assign({}, obj1, obj2);// copy1 与 copy2结果是一样的:{ foo: 'foo', bar: 'bar', hello: 'world' }

但如果是复杂一点的对象,如{ a: 0 , b: { c: 0 } }这样的,属性对应的值也是一个对象时,上面的方法就有问题了。若使用上面的两种方法,则得到的copy对象中,属性b的值与源对象中b的值共享的是同一个内存,即copy对象中的b的值只是源对象中对应引用的一份拷贝,改了源对象,copy对象会跟着变,反之亦然。这时候可以用下面的深拷贝。

(2)深复制

最简单的一种深拷贝,就是先序列化,再反序列化。

let obj = { a: 0 , b: { c: 0 } };let copy = JSON.parse(JSON.stringify(obj));

8、字符串常用操作

略,详见:https://www.cnblogs.com/guoyeqiang/p/8178336.html

9、异步

function resolveAfter2Seconds() {    return new Promise((resolve, reject) => {        setTimeout(() => {            let num = Math.floor(Math.random() * 10)            if (num > 5) {                resolve('resolve ' + num);            } else {                reject('reject ' + num)            }        }, 2000);    });}

Promise有两个回调,一个是resolve,一个是reject,前者为成功后的回调,后者为失败后的回调。

resolveAfter2Seconds().then(res => {    console.log('success: ' + res)}).catch(err => {    console.log('failure: ' + err)})

异步变同步,关键在于async以及await,下面的代码中,1、2、3是按顺序执行的,2虽是异步,但await的存在使得语句被阻塞在这里,只有2执行完,才会执行3。去掉async或await都是没有效果的,去掉后,2中的result就不再是resolve回调的结果了,而是Promise对象,需要像上面一样使用then或catch来获取结果。

function resolveAfter2Seconds() {  return new Promise(resolve => {    setTimeout(() => {      resolve('resolved');    }, 2000);  });}async function asyncCall() {  console.log('calling'); // 1  let result = await resolveAfter2Seconds(); // 2  console.log(result); // 3}asyncCall();

10、Object.is(value1:any, value2:any)方法

Object.is('foo', 'foo');     // trueObject.is(window, window);   // trueObject.is('foo', 'bar');     // falseObject.is([], []);           // falselet foo = { a: 1 };let bar = { a: 1 };Object.is(foo, foo);         // trueObject.is(foo, bar);         // falseObject.is(null, null);       // true// Special CasesObject.is(0, -0);            // falseObject.is(-0, -0);           // trueObject.is(NaN, 0/0);         // true

11、对象遍历

  • Object.keys(obj)

    Object.keys(obj).forEach(function(key){     console.log(key,obj[key]);});
    
  • for…in

    for(let key in obj) {
         console.log(key,obj[key]);
    }
    
  • Object.getOwnPropertyNames(obj)

    Object.getOwnPropertyNames(obj).forEach(function(key){
        console.log(key,obj[key]);
    });
    
  • Reflect.ownKeys(obj)

    Reflect.ownKeys(obj).forEach(function(key){
    	console.log(key,obj[key]);
    });
    

12、数组操作

  • concat方法:数据连接.将两个数组或者数组和其他数据链接成一个新的数组并返回。
  • join方法:修改数组的间隔符 数组名.join(“符号”);返回字符串
  • pop方法:移除最后一个元素,并返回该元素
  • push方法:在数组的最后添加新的元素,并返回数组的长度
  • reverse方法:反转数组内容
  • shift方法:移除第一个元素并返回该元素
  • unshift方法:在数组的第一个位置添加新的元素,并返回数组的长度。
  • splice方法:从指定位置开始删除指定数量的内容,同时可以在删除的位置添加新的内容

13、驼峰下划线互转

// 下划线转换驼峰
function toHump(name) {
    return name.replace(/\_(\w)/g, function(all, letter){
        return letter.toUpperCase();
    });
}
// 驼峰转换下划线
function toLine(name) {
  return name.replace(/([A-Z])/g,"_$1").toLowerCase();
}
WIFI 相关的频偏调试以及天线调试记录 WIFI RF 相关的频偏调试以及天线调试 1,频率误差(Frequency Error) 频率误差(Frequency Error):表征射频信号偏离该信号所处信道中心频率的大小,单位PPM。频偏误差要求范围如下表。 频偏越小越好。PPM的计算公式如下: 问题: 我们ESP8089认证测试的时候频偏测试超了。需要修改哪些呢。 测试频率点在2.411865385GHz 宣称点:2.412GHz 频率偏移计算:{(2.412GHz-2.411865385GHz)÷2... 阅读详情

相关推荐

基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验

本文详细介绍了基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验。通过分析纯滞后系统的控制难题,探讨大林算法在工业控制中的应用优势,并提供Matlab-Simulink环境搭建、控制器D(z)设计、振铃消除及仿真实验的完整流程。文章还对比了大林算法与PID控制的性能差异,为工程实践提供参考。

dropout6artist的博客 796

Javascript获取当前调用方法的名称

&lt;script language="javascript"&gt; function getFuncName(_callee) { var _text = _callee.toString(); var _scriptArr = document.scripts; for (var i=0; i&lt;_scriptArr.length; i++) { var _sta...

luoxun11的专栏 719

跟着团子学SAP CO:揭秘结果分析码在项目结算中的实战应用(一)KKA2/CJ88

本文深入解析了SAP CO模块中结果分析码在项目结算中的核心作用。以KKA2(方法10)和事务代码CJ88为例,详细阐述了如何在项目完工后一次性确认收入的场景下,通过结果分析功能实现收入与成本的精准匹配,将项目成本暂估为在制品,确保各期利润的准确反映。

gamma的博客 686

js 常用方法记录

数组 push: 将数据添加到数组末尾 var arr1 = [1,2,3]; arr1.push(4); // [1,2,3,4] pop:(弹出)一个数组末尾的值 var threeArr = [1, 4, 6]; var oneDown = threeArr.pop(); // [1, 4] shift:(移出)数组中的第一个元素 var ourArray = ["Stimpson", "J", "cat"]; ourArray.shift(); // ["J", "cat"]

qq_39896862的博客 159

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 474

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1193

【JavaScript】常用方法记录

方法名 作用 备注 全局方法 parseInt(str,radix) 将一个字符串基于radix解析为整数并返回。 radix=10或8或16,分别代表十进制、八进制、十六进制,如果不传radix,则会根据字符串进行解析,比如如果字符串开始为ox则以十六进制解析。 parseFloat(str) 返回一个浮点数 如果字符串不是以数字开头,则会返回NAN,字符串以空格开头不会...

Alexbyy的博客 190

Altium Designer(AD)PCB拼版——两种方法教程

本文详细介绍了PCB拼版的设计要点与操作方法。主要内容包括:拼版目的(解决小尺寸夹持问题、提高利用率、降低成本)和三大连接方式(V-CUT、邮票孔、空心连接条)的特点与参数设置;工艺边设计规范(宽度、定位孔、Mark点等要求);拼版尺寸限制与常见错误检查;以及两种具体拼版操作方法(特殊粘贴和拼版阵列),并附有工艺边、定位孔、Mark点的绘制步骤示意图。同时提供了硬件工程师笔试面试相关资源链接。全文系统阐述了PCB拼版的核心技术和操作流程,为电子设计人员提供了实用指导。

XU157303764的博客 7603

记录项目中常用的js方法

截取数组前5个对象 arr.slice(0,5) 截取字符串后3位(保留除了最后3位前面的部分) val.substring(0,val.length-3) 删除指定下标为index的对象 arr.splice(index,1) 使用map方法将数组处理成我们想要的样子 let arr = [ ] list.map(item => { arr.push({ userId: item.id, //用户id name: item.name,//姓名 }).

weixin_45121510的博客 1573

022、Conv-BN-SiLU 基础卷积块:构造函数参数计算,前向传播的 PyTorch 逐行实现

本文详细解析了Conv-BN-SiLU卷积块的实现细节与注意事项。作者从调试经历出发,指出bias参数冗余会导致数值不稳定,强调卷积层应设置bias=False。文章对比了SiLU与ReLU的特性差异,逐行分析了构造函数参数计算(包括自动填充、分组卷积等)和前向传播过程,特别讲解了BN层与SiLU激活的数值特性。最后分享了三个实践中的常见问题:BN的momentum设置、SiLU输出范围的影响,以及分组卷积的通道对齐要求,并提供了卷积与BN融合的推理优化技巧。全文聚焦实际工程实现中的关键细节,具有较强实操指

ai技术增长的博客 218

一文探讨视频秒开:m3u8视频格式与视频秒开优化

秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。

bjxiaxueliang的CODING小栈 2万+

JavaScript常用方法记录单

JavaScript常用方法记录单

w_basketboy的专栏 1478

在 ABAP 环境中创建 Job Catalog Entry 和 Job Template 的完整实践指南

摘要:本文介绍了SAP BTP ABAP环境中Application Job的云原生解决方案,对比传统后台作业模式。重点阐述了Job Catalog Entry和Job Template两大核心概念,通过库存重估业务场景演示如何实现可调度类、创建Job Catalog Entry及Job Template。文章详细说明了从ABAP类到Job Catalog Entry再到Job Template的完整链路,并分享实际项目中的设计经验和注意事项,帮助开发者将传统后台作业迁移到Application Job框架

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 233

javascript常用方法记录

格式化日期时间

duwei1990的专栏 526

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JS工作中常用方法记录

转为json 日期排序 var arr = ['2018-03-05','2013-06-12','2019-03-12','2018-03-05','2014-02-22']; var arr1 = [...new Set(arr)]; var sortedarr = arr1.sort((a,b)=>{ console...

qq_43504788的博客 179

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaScript常用方法记录

JavaScript常用方法

AND_YOU_with_ME的博客 387

js 项目中常用的方法记录用

js 项目中常用的方法记录用 1.求平均值 let num = arr.reduce((num, item, index) => { if (index != arr.length - 1) { return num + item; } else { return (num + item) / arr.length; } }); 2. 当前时间 xxxx-xx-xx xx

诚实可靠小郎君 158

day.js常用方法记录

day.js在做时间转换时候非常方便,不过官方文档描述比较简洁,在此记录下常用方法,想起来再更新。

nlhhln的博客 1593

js常用方法记录

单选框 格式 #foreach($data in $map.entrySet()) <input type="radio" onchange="change()" name="v" value=${data.key} >${data.value}</input> #end 设置初始化选中 $('input:radio[...

qq_31600523的博客 196

记录一些常用的JavaScript的方法

1. 检查输入IP: function checkIP() { var ipArray,ip,j; ip = document.ipform.ip.value; if (ip.indexOf(" ")&gt;=0){ ip = ip.replace(/ /g,""); document.ipform.ip.value = ip; } if (ip.toLo...

害羞雏田 181

js常用方法使用记录

【代码】js常用方法使用记录。

qq_44161722的博客 486

JavaScript操作HTML常用方法记录

JavaScript操作HTML常用方法收集

.NET 方向项目经验分享 564

记录一下JavaScript数组的常用方法,及代送

传入三个参数,分别是开始位置,要删除元素的数量,要插入的任意多个元素,返回删除元素的数组,对原数组产生影响。首先会创建一个当前数组的副本,然后再把它的参数添加到副本末尾,最后返回这个新构建的数组,不会影响原始数组。传入三个参数,分别是开始位置、0(要删除的元素数量)、插入的元素,返回空数组。传入两个参数,分别是开始位置,删除元素的数量,返回包含删除元素的数组。方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度。对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。

蓝斑.json的博客 452

记录JS常用数组操作方法

1.map()方法 对数组中的每一个元素调用一种方法,不会改变原数组 exp: var arr = [ '10','20','30','40','50' ] var num1 = arr.map( ( el,index )=>{ el = el*2 // arr还是[ '10','20','30','40','50' ] } ) 2.for...

qq_42698109的博客 2913

js类库 一些常用方法记录

=========================json2.js JSON.stringify(OBJ) toString JSON.parse(string)  toObj ============jquery=======加载方式 $(document).ready(function() {  });  就仅仅只需要加载所有的DOM结构,在浏览器把所有的HTML放入DOM tre

William Lin 的专栏 1686

记录一些常用的js工具方法的封装

日期格式化: /* * 格式化日期函数 * 参数: * {1} -> date : 日期对象(Date) * {2} _> format: 格式 (yyyy-MM-dd hh:mm:ss) */ let dateUtil = {}; dateUtil.format = function(date, format) { var o = { "M+": date.getMonth() + 1, "d+": date

HuangsTing的博客 317
上一篇: springboot整合dubbo简单实例
下一篇: docker环境下mysql主从复制的简单实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值