分享前端开发常用代码片段

Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿 本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。 阅读详情

分享开发中常用的一些 代码片段,我们的目标是早下班、不加班,哈哈~~

1、手机号隐藏中间4位

//手机号脱敏
function mobile(data) {
    return data.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
}

2、证件号脱敏,包括但不限于身份证

//身份证脱敏 -- 1
function idCard(data) {
    return data.replace(/(\d{4})\d*([0-9xX]{4})/, "$1******$2");
}

//身份证脱敏 -- 2
function idCard(data) {
    if(data.toString().length == 18) {
        return data.slice(0,2) + '****************' + data.slice(16,18)
    } else if(data.toString().length == 15) {
        return data.slice(0,2) + '***********' + data.slice(13,15)
    }
}

//证件脱敏,data->数据,beforeLen->前置位数,afterLen->后置位数
function newIdCard(data, beforeLen, afterLen) {
    let dataLenth = data.length - beforeLen - afterLen
    let middleStr = ''
    for (let i = 0; i < dataLenth; i++) {
        middleStr += '*'
    }
    return data.slice(0, 2) + middleStr + data.substring(data.length - afterLen)
}

3、金额处理,经常会遇到数字相乘或相除得问题,但结果往往不是我们想要得,例如12.32 * 7 结果是86.24000000000001;

//金额
export function money(num){
    return num >= 10000 ? parseFloat(num) * 10000/100000000+'万' : num
}

4、返回不同类型得日期

//格式化时间
export function dateFormat(time,fmt){
    return fnDateFormat(time,fmt)
}

export default function(time,fmt){
    var fmt = fmt || 'yyyy-MM-dd HH:mm:ss';
    var time = time ? new Date(time) : new Date();
    var o = {   
        "M+" : time.getMonth()+1,                 //月份   
        "d+" : time.getDate(),                    //日   
        "H+" : time.getHours(),                   //小时   
        "m+" : time.getMinutes(),                 //分   
        "s+" : time.getSeconds(),                 //秒
        "S"  : time.getMilliseconds()             //毫秒   
    };
    if(/(y+)/.test(fmt))
        fmt=fmt.replace(RegExp.$1, (time.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
          if(new RegExp("("+ k +")").test(fmt))
              fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  return fmt;
}

5、通过身份证获取年龄、性别、生日

//通过身份证获取年龄 & 生日
const idCardBirthday = function(data){
    //获取出生年月日
    var year = data.substring(6,10);
    var month = data.substring(10,12);
    var day = data.substring(12,14);
    return `${year}-${month}-${day}`
}

//通过身份证获取性别
const idCardGender = function(data){
    //1 男 2 女    
    return parseInt(data.slice(-2, -1)) % 2 == 1 ? 1 : 2;    
}

const birthdayAge = function(str, type) {
    var type = type || 'year';


    //补零
    let zeroize = function(value) {
        if (value < 10) {
            value = '0' + value
        }
        return value
    }
    
    var birthDay = new Date(str)
    var yearBirth = birthDay.getFullYear();
    var monthBirth = birthDay.getMonth() + 1;
    var dayBirth = birthDay.getDate();

    var myDate = new Date();
    var monthNow = myDate.getMonth() + 1;
    var dayNow = myDate.getDate();
    var age = myDate.getFullYear() - yearBirth;
    if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
        age--;
    }

    return age
}

export default {
  idCardBirthday ,
  idCardGender,
  birthdayAge
}

6、手机号、身份证正则表达式

//手机号
const mobile = /^[1]+\d{10}$/;

//身份证
//const idCard = /(^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$) | (^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/;    //18位 & 15位
const idCard = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/

7、邮箱、纳税号正则表达式

//网址
const domain = /(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;

//邮箱
const email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/

//纳税号
const corporationTax = /^[0-9A-Z]{15,20}$/

8、PDF文件下载

/**
 * 文件链接转文件流下载--主要针对pdf 解决谷歌浏览器a标签下载pdf直接打开的问题
 * @param url  :文件链接
 * @param fileName  :文件名;
 * @param type  :文件类型;
 */
export function fileLinkToStreamDownload(url, fileName, type) {
  let reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
  if (!reg.test(url)) {
    throw new Error("传入参数不合法,不是标准的文件链接");
  } else {
    let xhr = new XMLHttpRequest();
    xhr.open('get', url, true);
    xhr.setRequestHeader('Content-Type', `application/${type}`);
    xhr.responseType = "blob";
    xhr.onload = function () {
      if (this.status == 200) {
        //接受二进制文件流
        var blob = this.response;
        downloadExportFile(blob, fileName, type)
      }
    }
    xhr.send();
  }
}


/**
 *下载导出文件
 * @param blob  :返回数据的blob对象或链接
 * @param tagFileName  :下载后文件名标记
 * @param fileType  :文件类 word(docx) excel(xlsx) ppt等
 */
function downloadExportFile(blob, tagFileName, fileType) {
  let downloadElement = document.createElement('a');
  let href = blob;
  if (typeof blob == 'string') {
    downloadElement.target = '_blank';
  } else {
    href = window.URL.createObjectURL(blob); //创建下载的链接
  }
  downloadElement.href = href;
  downloadElement.download = tagFileName + '.' + fileType; //下载后文件名
  document.body.appendChild(downloadElement);
  downloadElement.click(); //点击下载
  document.body.removeChild(downloadElement); //下载完成移除元素
  if (typeof blob != 'string') {
    window.URL.revokeObjectURL(href); //释放掉blob对象
  }

}

9、判断是否微信环境、小程序环境

var isWeiXin = function() {
	var ua = window.navigator.userAgent.toLowerCase();
	if (ua.match(/MicroMessenger/i) == 'micromessenger') {
		return true;
	} else {
		return false;
	}
}

export function isMiniProgram(callback) { //是否为小程序环境
	//是否在微信环境
	if (!isWeiXin()) {
		callback(false);
	} else {
		//微信API获取当前运行环境
		wx.miniProgram.getEnv((res) => {
			if (res.miniprogram) { //小程序环境
				callback(true);
			} else {
				callback(false);
			}
		})
	}
}

10、数组去重

datas = [1,4,6,78,768,34,344,3,6,78,55,5,38,'qq','aa','qq']
let datas = datas.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index;
})
console.log(datas) //[1, 4, 6, 78, 768, 34, 344, 3, 55, 5, 38, 'qq', 'aa']

11、删除Object中的null和undefined

//删除null和Unfined
const removeNullUndefined = objText => {
	Object.keys(objText ).forEach(item => {
	    if (!objText[item] && objText[item] != 0) {
	        delete objText[item]
	    }
    })
	return objText;
}

12、比较当前日期是否在时间段之内

countTime(startTime, endTime){
	let nowDate = new Date(),
		startDate = new Date(startTime),
		endDate = new Date(endTime)
	if(nowDate >= startDate && nowDate <= endDate){
		return true
	}

	return false
}

13、阻止默认行为

$('#button').on('click', function (event) {
    event.preventDefault();
});

 14、阻止冒泡

$('#button').on('click', function (event) {
    event.stopPropagation();
});

 15、手机端禁止页面在浏览器滚动

//可以在根元素body上添加preventDefault方法 
<body ontouchmove="event.preventDefault()" >

//或者  在滑动事件touchMove中添加
document.addEventListener('touchmove', function(event) {
    event.preventDefault();
})

16、获取浏览器滚动条的高度

document.documentElement.scrollTop || document.body.scrollTop

17、发送验证码

//获取短信验证码倒计时
countdown(maxTime) {
	if (maxTime > 1) {
		maxTime--;
		this.verityText = `${maxTime}s后重发`;
		setTimeout(() => {
			this.countdown(maxTime);
		}, 1000)
	} else {
		this.verityText = '重新发送';
		this.verityCodeFlag = false;
	}
},

18、删除对象中某属性

let params = {
    planCode: '',
    orgCode: '0001',
    personCode: '',
    id: '10'
}

//方案一 delete属性
delete params.id  //对象名.属性名

//方案二 es6解构
let { planCode,...params} = params ; 
console.log(params)
//{orgCode: '0001', personCode: '', id: '10'}

19、

let params = {
    planCode: '',
    orgCode: '0001',
    personCode: '',
    id: '10'
}

// 方案1
var d = JSON.parse(JSON.stringify(params,function(key,value){
    if(value == ''|| value == null || value == undefined){
      delete params[key]
    }else{
      return value;
    }
}))

console.log(d)
// {orgCode: '0001', id: '10'}

// 方案2
for(let item in params){
    if(params[item] == '') {
        delete params[item]
    }
}

 

持续更新。。。

手把手教你用Cadence仿真12bit SAR ADC:从电路图到FFT频谱分析(含Simc 18mmrf工艺文件) 本文详细介绍了使用Cadence仿真12bit SAR ADC的全流程,包括电路搭建、仿真环境配置、瞬态仿真优化及FFT频谱分析。基于Simc 18mmrf工艺文件,提供从电路图到性能验证的实战指南,特别分享工程实践中的排错技巧和优化策略,帮助工程师高效完成ADC设计验证。 阅读详情

相关推荐

频偏估计技术:从原理到5G应用的实战解析

本文深入解析了5G通信中的频偏问题及其核心技术。频偏如同调不准的旋钮,会导致信号失真与载波间干扰。文章详细拆解了整数倍与小数倍频偏估计两大核心方法,重点剖析了基于循环前缀和基于同步信号块的算法原理与优劣,并结合eMBB、mMTC、URLLC三大5G应用场景,提供了实战算法选择策略与参数调优避坑指南。

weixin_29218963的博客 261

前端代码集

HTML5 使用FileReader实现前端图片预览 获取到页面中所有的checkbox怎么做?(不使用第三方框架) JavaScript模版引擎小实例 Javascript 实现JS函数重载 JS跨浏览器绑定事件函数 JS单体模式 使用prototype属性定义的对象方法 闭包实现结果缓存 闭包实现封装 闭包实现类和继承 如何判断...

weixin_33817333的博客 309

AD20丝印层导入图片logo保姆级教程(附黑白预览避坑技巧)

本文提供了一份详尽的AD20丝印层导入图片Logo的实战指南。核心在于将图片预处理为高质量的单色BMP位图,并独家分享了利用Windows画图工具进行“黑白预览”的关键技巧,以提前规避转换失真。教程涵盖了从脚本获取、图片处理、参数设置到生产规范的完整流程,帮助硬件工程师高效、准确地在PCB的Top Overlay层添加个性化标识。

weixin_29194255的博客 385

前端常用代码整理(不断更新中)

前端代码整理,不断进行更新

憬淮的博客 4238

保姆级教程:QGC地面站Vehicle Setup全模块配置详解(从固件升级到安全设置)

本文提供QGC地面站Vehicle Setup全模块配置的保姆级教程,涵盖从固件升级到安全设置的完整流程。详细解析二次开发环境准备、传感器校准、飞行模式配置等关键步骤,帮助用户快速掌握无人机配置技巧,确保飞行安全与性能优化。

weixin_28726671的博客 384

Silvaco Atlas从头开始(四)——定义材料参数和模型

这部分是关于定义材料参数和模型。

qsz1425AWD2121的博客 4648

web前端开发程序员必须知道的HTML常⽤代码汇总

html+css代码 ⽂本设置 1、font-size: 字号⼤⼩ 2、font-style: 字体格式 3、font-weight: 字体粗细 4、颜⾊属性color: ⽂本颜⾊ 注意使⽤⽹页安全⾊ 超链接设置 text-decoration: 参数 参数取值范围: underline:为⽂字加下划线 overline:为⽂字加上划线 line-through:为⽂字加删除线 blink:使⽂字闪烁 none:不显⽰上述任何效果 背景 1、背景颜⾊ background-

weixin_72636693的博客 4076

Llama模型结构拆解:为什么MLP模块要这样设计?从参数配置到计算流程全解析

本文深入解析了Llama模型MLP模块的设计精髓。通过拆解其三线性层结构、门控机制与SwiGLU激活函数,揭示了并行计算如何提升效率,并详细阐述了intermediate_size参数配置背后的经验权衡与计算考量,帮助读者透彻理解这一核心组件的设计逻辑与工程实现。

mac99的博客 528

web前端开发

标签,其中包含整个页面的内容,以

m0_70323676的博客 1866

RK3568 低功耗设计全解析:DVFS 策略与 PMIC 电源管理

本文深入解析RK3568处理器的低功耗优化方案。从硬件架构分析入手,阐述四核Cortex-A55的功耗特性及分层电源域设计。重点介绍DVFS动态调压调频技术,包括Linux内核配置方法及场景化策略设计。详细讲解RK809 PMIC的电源管理优化,提供外设电源域控制与休眠唤醒配置的实战案例。通过智能终端应用实例,展示待机功耗从280mA降至65mA的优化效果,并推荐功率测试工具。文章强调需要平衡性能与功耗,结合场景定制策略,并指出AI负载预测等未来优化方向,为RK3568开发者提供系统性的低功耗解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2073

10款AI工具赋能虚拟展厅设计:架构师效率提升90%的秘密武器

2020年全球疫情成为数字转型的催化剂,虚拟展厅从"可选项"迅速转变为"必需品"。根据Gartner最新报告,到2025年,超过70%的企业将采用虚拟展厅作为客户体验和产品展示的核心渠道。这一转变不仅是应急措施,更是商业模式的永久性革新。虚拟展厅突破了物理空间的限制——一个精心设计的虚拟展厅可以同时接待来自全球各地的访客,无需考虑场地容量;展品可以以数字形式永久保存,避免了物流和损耗问题;数据分析功能可以精确追踪每位访客的行为轨迹,提供前所未有的洞察。数据透视。

AI 领航者的博客 1573

web前端代码大全_Web前端开发代码规范(基础)

一、 引言 对于一个多人团队来说,制定一个统一的规范是必要的,因为个性化的东西无法产生良好的聚合效果,规范化可以提高编码工作效率,使代码保持统一的风格,以便于代码整合和后期维护。二、 HTML/CSS规范2.1 浏览器兼容根据公司业务要求而定,一般:主流程测试:Chrome 30+、IE9+;完整测试: Chrome 21、IE8+、360浏览器、微信webview/QQ手机浏览器。2.2 ...

weixin_39528525的博客 7783

【系统架构设计师】二十六、论文写作要点

论文写作概述:时间所需120分钟;题目可四选一,必有一题考察软件架构,总有一款适合你;考察形式是机试(开心,再也不用担心字丑了),约2500字。

帅次的博客 4596

分享一些前端开发中最常用的JS代码片段~ 干货~

分享一些前端开发中最常用的JS代码片段~ 干货~ HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合 var items = documen...

pnjtvxcp的博客 440

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

分享 前端开发 常用代码片段

原文:segmentfault.com/a/1190000014700549 一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 二、检查图像是否加载 有时为了继续脚本,你可能需要检查图像是否全部加载完毕。 你也可以使用 ID 或 CLASS 替换 标签来检查某个特定的图像是否被加载。 三、自动修复破坏的图像 逐个替换已经破坏的图像链接是非常痛苦的。不过,下面这段简单的代码可以帮助你。 四、悬停切换 当用户鼠标悬停在可点击的元素上时,可添加类到元素中

楚叫兽 219

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

分享前端开发常用代码片段-值得收藏

一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 二、检查图像是否加载 有时为了继续脚本,你可能需要检查图像是否全部加载完毕。 你也可以使用 ID 或 CLASS 替换 &lt;img&gt;标签来检查某个特定的图像是否被加载。 三、自动修复破坏的图像 逐个替换已经破坏的图像链接是非常痛苦的。不过,下面这段简单的代码可以帮助你...

weixin_42817899的博客 557

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

分享一些前端开发中最常用的JS代码片段

逛社区时看到的文章,我修改调整了内容,如果大家觉得也有帮助 可以收藏下~ HTML5 DOM 选择器 javascript 代码 JavaScript运行复制全屏 1 // querySelector() 返回匹配到的第一个元素 2 var item = document...

chuanggua5622的博客 168

[转]分享前端开发常用代码片段

转自:前端大全 https://mp.weixin.qq.com/s/Ma9SvTTiIipxx5nfSkb9ug 一、预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。 $.preloadImages = function () { for (var i = 0; i &amp;lt; arguments.length; i++) { ...

qq_39108466的博客 316
上一篇: vue+mint-ui 组件实现省市县三级联动功能
下一篇: Vant Cascader级联选择 实现省市区三级
逩跑鍀小学生
博客等级 码龄5年 37粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值