前端常用的方法
时间处理
moment时间处理函数
// 时间日期相关常用的方法变量
import moment from 'moment';// 获取当前时间 moment
export const nowDateMoment = moment(new Date());
export const nowDateY = moment(new Date()).format('YYYY');
export const nowDateM = moment(new Date()).format('MM');
export const nowDateYM = moment(new Date()).format('YYYY-MM');
export const nowDateYMD = moment(new Date()).format('YYYY-MM-DD');
export const nowDateYMDHms = moment(new Date()).format('YYYY-MM-DD HH:mm:ss');// 把年月 转换为 年-月
export const YMFormattedYM = (year: number | string, month: number | string) => {let newMonth = Number(month) > 9 ? month : `0${month}`;return `${dateFormattedY(year)}-${newMonth}`;
};// 日期格式转换为moment
export const dateFormattedMoment = (date: any) => {let newDate = date;if (date && typeof date === 'string') {newDate = moment(date);}return newDate;
};// 格式化时间 YYYY
export const dateFormattedY = (date: any) => {return date ? dateFormattedMoment(date).format('YYYY') : date;
};// 格式化时间 MM
export const dateFormattedM = (date: any) => {return date ? dateFormattedMoment(date).format('MM') : date;
};// 格式化时间 YYYY-MM
export const dateFormattedYM = (date: any) => {return date ? dateFormattedMoment(date).format('YYYY-MM') : date;
};// 格式化时间 YYYY-MM-DD
export const dateFormattedYMD = (date: any) => {return date ? dateFormattedMoment(date).format('YYYY-MM-DD') : date;
};// 格式化时间 YYYY-MM-DD HH:mm:ss
export const dateFormattedYMDHms = (date: any) => {return date ? dateFormattedMoment(date).format('YYYY-MM-DD HH:mm:ss') : date;
};// 格式化时间 YYYY-MM-DDTHH:mm:ss.SSSZ
export const dateFormattedSSSZ = (date: any) => {return date ? dateFormattedMoment(date).format('YYYY-MM-DDTHH:mm:ss.SSSZ') : date;
};// 格式化时间 'YYYY-MM-DDTHH:mm:ss.000+0800 2022-03-24T08:56:36.000+0800
export const dateFormattedTimezone = (date: any) => {return date ? dateFormattedSSSZ(date).slice(0, -3) + '00' : date;
};// 获取本周周几的日期
export const getWeekDate = (day: number) => {// moment().weekday(0).format('YYYY/MM/DD') //本周一// moment().weekday(6).format('YYYY/MM/DD') //本周日return moment().weekday(day).format('YYYYMMDD');
};// 比较两个时间 是否等于
export const isEqDate = (startDate: any, endDate: any) => {return compareDate(startDate, endDate, 'eq');
};// 比较两个时间 是否大于
export const isGtStartDate = (startDate: any, endDate: any) => {return compareDate(startDate, endDate, 'gt');
};// 比较两个时间 是否大于等于
export const isGeStartDate = (startDate: any, endDate: any) => {return compareDate(startDate, endDate, 'ge');
};// 比较两个时间 是否小于
export const isLtEndDate = (startDate: any, endDate: any) => {return compareDate(startDate, endDate, 'lt');
};// 比较两个时间 是否小于等于
export const isLeEndDate = (startDate: any, endDate: any) => {return compareDate(startDate, endDate, 'le');
};// 对时间进行排序
export const isSortDate = (startDate: any, endDate: any) => {return startDate === endDate ? 0 : isGtStartDate(startDate, endDate) ? 1 : -1;
};// 比较时间公共方法
const compareDate = (startDate: any, endDate: any, type: string) => {if (!startDate || !endDate) return false;let newStartDate = dateFormattedYMD(startDate);let newEendDate = dateFormattedYMD(endDate);let condition;switch (type) {case 'eq':condition = newStartDate === newEendDate;break;case 'gt':condition = newStartDate > newEendDate;break;case 'ge':condition = newStartDate >= newEendDate;break;case 'lt':condition = newStartDate < newEendDate;break;case 'le':condition = newStartDate <= newEendDate;break;}return condition ? true : false;
};// 是否在两个日期范围内
export const isDateRange = (startDate: any, endDate: any, date: any) => {let newDate = dateFormattedYMD(date);if (dateFormattedYMD(startDate) <= newDate && newDate <= dateFormattedYMD(endDate)) {return true;}return false;
};// 获取两个日期的差值 2022-03-25 2022-03-20 5天
export const getDiffDays = (endDate: any, startDate: any) => {if (endDate && startDate) {return moment(endDate).diff(moment(startDate), 'day');} else {return 0;}
};// 开始时间增加N天
export const getAddDays = (startDate: any, days: number) => {let newStartDate = dateFormattedMoment(startDate);if (days >= 0) {newStartDate.add(days, 'days');}return newStartDate;
};// 开始时间减N天
export const getSubtractDays = (startDate: any, days: number) => {let newStartDate = dateFormattedMoment(startDate);if (days >= 0) {newStartDate.subtract(days, 'days');}return newStartDate;
};
时间戳处理成为年月日时分秒
const convertTimestampToHMS=(timestampStr) =>{const timestampdata = Number(timestampStr);var date = new Date(timestampdata);var year = date.getFullYear();var month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1var day = String(date.getDate()).padStart(2, '0');var hours = String(date.getHours()).padStart(2, '0');var minutes = String(date.getMinutes()).padStart(2, '0');var seconds = String(date.getSeconds()).padStart(2, '0');return `${year}年${month}月${day}日 ${hours}:${minutes}:${seconds}`;}
将年月日时分秒的数据处理成为时间戳
function convertDateTimeToTimestamp(dateTimeStr, year = 2024) {const fullDateTimeStr = `${year}-${dateTimeStr}`;const date = new Date(fullDateTimeStr.replace('-', 'T'));const timestamp = date.getTime();return timestamp;}
处理对象的方法对象的属性
遍历对象
//方法1
let obj = {user: "name",};for (let k in obj) {console.log(k);}
//输出 user
//方法2let a = {1733813940000: [{occurTime: 1733813940000,},],1733814000000: [{occurTime: 1733814000000,},],};Object.keys(a).forEach((key) => {console.log(key);console.log(a[key]);});
对象的浅拷贝
let a={
name:1
};
let b={
type:”Add“
};
Object.assign(a,b)
let obj ={...a,...b}
处理2个数据相同的数据处理类型2个都是对象,且数据完全一致把他筛选出来
function filterDuplicates(arr) {return arr.reduce((acc, current) => {const stringifiedCurrent = JSON.stringify(current);if (!acc.map(JSON.stringify).includes(stringifiedCurrent)) {acc.push(current);}return acc;}, []);}
本地存储
拿到本地存储的对象的方法
export const getLocalStorageuserInfo = (localName, data) => {const storedUserInfo = localStorage.getItem(localName);if (storedUserInfo) {const parsedUserInfo = JSON.parse(storedUserInfo)[data];return parsedUserInfo;}};
设置本地存储的方法
export const setLocalStorage = (localName, data) => {localStorage.setItem(localName, JSON.stringify(data));return;};setLocalStorage("data", a);
删除设定的值的本地存储
const removeLocalStorage = (data) => {localStorage.removeItem(data);return;};
删除所有的本地存储
const removeTotalLocalStorage = () => {localStorage.clear();return;};
数组处理
将平铺的数组转化为属性结构的数组
const wbsArray = [{id: '1',pid: '0',name: 'Parent'},{id: '2',pid: '1',name: 'Child 1'},{id: '3',pid: '1',name: 'Child 2'}// ...其他数据]function wbsArrayToTree(array, rootId = '0'){let parent = []let children = []array.forEach((item) => {item.pid === rootId ?(parent = [...parent, item]) :(children = [...children, item])})const translator = (parent, children) => {parent.forEach((parent) => {children.forEach((current, index) => {if (current.pid === parent.id) {// const temp = JSON.parse(JSON.stringify(children))const temp = [...children]temp.splice(index, 1)translator([current], temp)typeof parent['children'] !== 'undefined' ?parent.children.push(current) :(parent.children = [current])parent['childIds'] && delete parent['childIds']}})})}translator(parent, children)return parent}const tree = wbsArrayToTree(wbsArray);console.log(tree);
树形数组转为一维数组
//方法1function flattenAndSort(array) {return array.reduce((result, element) => {// 如果元素是数组,则递归调用flattenAndSortif (Array.isArray(element)) {console.log(element, "1");result = result.concat(flattenAndSort(element));} else {result.push(element);}return result;}, []).sort((a, b) => a - b); // 排序数组}const flattenedAndSortedArray = flattenAndSort(arr);console.log(flattenedAndSortedArray, "27");
//方法2function getArry(arr) {const trust= []function fn(arr) {arr.forEach(element => {if (Array.isArray(element)) {fn(element);} else {trust.push(element);}});}fn(arr)return trust.sort((a, b) => a - b)}const trust = getArry(arr)console.log(trust);
当一个需要另一个数组的数据的时候需要怎么样进行处理
success.forEach((item) => {list.forEach((item1) => {if (item.time !== item1.time) {obj.push({ ...item, type: '有效告警', value: 0 });obj.push({ ...item, type: '无效告警', value: 0 });}});});let uniqueData = filterDuplicates(obj);uniqueData.sort((a, b) => parseInt(a.time1) - parseInt(b.time1));
//这样的使用的时候可能造成的情况就是会导致重复的数据需要借助上方的过滤对象的方法
处理数组的数组的需要判断是否有一个数据是false或者为true来达到自增的目的
const getValues = (r, v) => {let Noise = 0;v.forEach((item) => {if (!item.ruleAlarmNoise) {// 正确的自增方式Noise++;}});return Noise;};
对字符串进行处理
对 "#### 日均量: 884159.01笔/天\n#### 日均有流量时间占比: 100.00%\n\n#### ><font“处理
const getNosrt = (value) => {if (!value) return [];let parts = value.split('#');let result = [];parts = parts.filter((part) => part.trim() !== '');for (let part of parts) {result.push(part.trim());}let joinedString = result.join(',');return joinedString;};
相关文章:
前端常用的方法
时间处理 moment时间处理函数 // 时间日期相关常用的方法变量 import moment from moment;// 获取当前时间 moment export const nowDateMoment moment(new Date()); export const nowDateY moment(new Date()).format(YYYY); export const nowDateM moment(new Date()).f…...
RK3568(六)——led设备驱动(GPIO子系统)
修改设备树文件 先关闭心跳灯功能,也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled,也就是禁止 work 这个节点,那么禁止心跳灯功能。 我们后面需要禁止哪个功能,只需要将其 status 属性改为 disabled 就可以了。 gpi…...

hbuilder 本地插件配置
插件存放路径,项目根目录nativeplugins下,没有就新建。 aar文件存放路径\nativeplugins\module\android package.json存放路径\nativeplugins\module\ 配置package.json文件 { "name": "module", "id": "modu…...
Spring Boot集成Kafka:最佳实践与详细指南
文章目录 一、生产者1.引入库2.配置文件3.配置类PublicConfig.javaMessageProducer.java 4.业务处理类 三、消费者1.引入库2.配置类PublicConfig.javaMessageConsumer.java 3.业务类 一、生产者 1.引入库 引入需要依赖的jar包,引入POM文件: <depend…...

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理
基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…...

详解下c语言下的多维数组和指针数组
在实际c语言编程中,三维及以上数组我们使用的很少,二维数组我们使用得较多。说到数组,又不得关联到指针,因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…...

免费送源码:Java+ssm+MySQL 基于微服务架构的餐饮系统的设计与实现 计算机毕业设计原创定制
摘 要 近年来,我国经济和社会发展迅速,人们物质生活水平日渐提高,餐饮行业更是发展迅速,人们对于餐饮行业的认识和要求也越来越高。传统形式的餐饮行业都是以人为本,管理起来需要很多人力、物力、财力,既不方便管理者的管理,也不方便顾客实时了解餐厅动态,给传统餐饮行业的经…...
LeetCode hot100-69-N
https://leetcode.cn/problems/valid-parentheses/description/?envTypestudy-plan-v2&envIdtop-100-liked 20. 有效的括号 已解答 简单 相关标签 相关企业 提示 给定一个只包括 (,),{,},[,] 的字符串 s &#x…...

【橘子容器】如何构建一个docker镜像
你肯定打过docker镜像是吧,作为一个开发这很正常,那么你用的什么打包方式呢,这里我们来梳理几种常用的docker镜像构建方式。 ps:这里不是太讲原理,更多的是一种科普和操作。因为讲原理的东西网上已经够多了。 一、Dock…...

EFAK kafka可视化管理工具部署使用
简介:EFAK是开源的可视化和管理软件。它允许您查询、可视化、提醒和探索您的指标,无论它们存储在何处。简单来说,它为您提供了将 Kafka 集群数据转换为漂亮的图形和可视化效果的工具。 环境:①操作系统:CentOS7.6&…...
Spring Boot 工程分层实战(五个分层维度)
1、分层思想 计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性,分层思想同样适用于Java工程架构。 分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原…...

vscode IntelliSense Configurations
IntelliSense 是一个强大的代码补全和代码分析功能,它可以帮助开发者提高编程效率。图中显示的是 VSCode 的 IntelliSense 配置界面,具体配置如下: Compiler path(编译器路径): 这里指定了用于构建项目的编译器的完整路…...

hbase读写操作后hdfs内存占用太大的问题
hbase读写操作后hdfs内存占用太大的问题 查看内存信息hbase读写操作 查看内存信息 查看本地磁盘的内存信息 df -h查看hdfs上根目录下各个文件的内存大小 hdfs dfs -du -h /查看hdfs上/hbase目录下各个文件的内存大小 hdfs dfs -du -h /hbase查看hdfs上/hbase/oldWALs目录下…...

C++----入门篇
引言 C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助,本章节主要目标: 1. 补充C语言语法的不足,以及C是如何对C语言…...

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期
知识要点:变量的作用域和生存期 视频: 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组,内放 10 个学生成绩,写一个函数,求出平均分、最高分和最低分。 任务要求用一个函数来完…...
用 Sass 模块化系统取代全局导入,消除 1.80.0 引入的 @import 弃用警告
目录 前言 问题 import 的缺陷 命名冲突 重复导入 模块系统 use 规则 forward 规则 实际修改 前言 最初,Sass 使用 import 规则通过单个全局命名空间加载其他文件,所有内置函数也可全局使用。由于模块系统(use 和 forward 规则&…...

安卓低功耗蓝牙BLE官方开发例程(JAVA)翻译注释版
官方原文链接 https://developer.android.com/develop/connectivity/bluetooth/ble/ble-overview?hlzh-cn 目录 低功耗蓝牙 基础知识 关键术语和概念 角色和职责 查找 BLE 设备 连接到 GATT 服务器 设置绑定服务 设置 BluetoothAdapter 连接到设备 声明 GATT 回…...
搭建fastapi项目
环境准备 # 创建项目目录 mkdir my_fastapi_project cd my_fastapi_project# 创建和激活虚拟环境 python -m venv venv .\venv\Scripts\activate安装必要的包 pip install fastapi uvicorn python-dotenv创建项目基本结构 my_fastapi_project/ │ .env # …...

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)
目录 一、Maven项目模块化? (1)基本介绍。 (2)汽车模块化生产再聚合组装。 (3)Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…...
华为云云原生中间件DCS DMS 通过中国信通院与全球IPv6测试中心双重能力检测
近日,中国信息通信研究院(以下简称“中国信通院”)与全球IPv6测试中心相继宣布,华为云的分布式缓存服务(Distributed Cache Service,简称DCS)和分布式消息服务(Distributed Message …...

PostgreSQL中事件触发器Event Trigger
在PostgreSQL中,事件触发器(Event Trigger)是一种特殊的触发器类型,它允许你在特定的数据库系统事件发生时执行特定的操作。与普通的触发器不同,事件触发器并不与特定的表或视图相关联,而是与数据库级别的全…...
uni.request流式(Stream)请求,实现打印机效果
最近使用扣子 - 开发指南 (coze.cn)和智谱AI开放平台开发小程序AI导诊和用药对话指南。 开发的过程中也是走了不少坑,下面就来聊聊走了哪些坑。 坑1 :coze试了v2和v3的接口,两个接口请求还是有点差别的,v2拿到了botId和accessToken可以直接请求不需要做任何处理,v3还需要…...
canvas保存图片
需求:上面有几个按钮,其中有一个切换是图片 用v-if会导致图片加载慢 实现方法: 一进来就加载,通过监听元素显示,用于控制canvas的宽高,从而达到隐藏的效果 组件dowolad.vue <template><view …...
DNS到底有什么用?
举个例子,对于我们来说访问的域名是www.baidu.com,但是实际在计算机并不认识这个域名,计算机是需要通过IP地址去访问这个网站,所以呢?这个时候就需要一个dns解析器,来把这串域名转换为IP地址给计算机去访问…...

什么是CRM系统?CRM系统的功能、操作流程、生命周期
CRM系统作为企业管理和维护客户关系的重要工具,在商业活动中扮演着越来越重要的角色。今天,就让我们一起揭开它的神秘面纱,看看这个“幕后英雄”到底是怎么工作的。 什么是CRM系统? 首先,我们要了解什么是CRM。简单来…...

美畅物联丨JS播放器录像功能:从技术到应用的全面解析
畅联云平台的JS播放器是一款功能十分强大的视频汇聚平台播放工具,它已经具备众多实用功能,像实时播放、历史录像回放、云台控制、倍速播放、录像记录、音频播放、画面放大、全屏展示、截图捕捉等等。这些功能构建起了一个高效、灵活且用户友好的播放环境…...

我们来学mysql -- 事务并发之不可重复读(原理篇)
事务并发之不可重复读 题记不可重复读系列文章 题记 在《事务之概念》提到事务对应现实世界的状态转换,这个过程要满足4个特性这世界,真理只在大炮射程之类,通往和平的道路,非“常人”可以驾驭一个人生活按部就班,人多…...

ABAQUS进行焊接仿真分析(含子程序)
0 前言 焊接技术作为现代制造业中的重要连接工艺,广泛应用于汽车、船舶、航空航天、能源等多个行业。焊接接头的质量和性能直接影响到结构件的安全性、可靠性和使用寿命。因此,在焊接过程中如何有效预测和优化焊接过程中的热效应、应力变化以及材料变形等问题,成为了焊接研…...
BAPI_GOODSMVT_CREATE物料凭证增强字段
目的:增加字段LSMNG LSMEH的赋值 项目MSEG 的 BAPI 表增强结构 BAPI_TE_XMSEG 抬头MKPF 的 BAIP 表增强 BAPI_TE_XMKPF 1. 在结构BAPI_TE_XMSEG中appending structure附加结构 ZMSEG_001,增加字段LSMNG, LSMEH In The method IF_EX_MB_H…...

tomcat的优化和动静分离
tomcat的优化 1.tomcat的配置优化 2.操作系统的内核优化 注意:设置保存后,需要重新ssh连接才会看到配置更改的变化 vim /etc/security/limits.conf # 65535 为Linux系统最大打开文件数 * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 *…...