前端常用的方法
时间处理
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 …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
