当前位置: 首页 > news >正文

前端常用的方法

时间处理

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子系统)

修改设备树文件 先关闭心跳灯功能&#xff0c;也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled&#xff0c;也就是禁止 work 这个节点&#xff0c;那么禁止心跳灯功能。 我们后面需要禁止哪个功能&#xff0c;只需要将其 status 属性改为 disabled 就可以了。 gpi…...

hbuilder 本地插件配置

插件存放路径&#xff0c;项目根目录nativeplugins下&#xff0c;没有就新建。 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包&#xff0c;引入POM文件&#xff1a; <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语言编程中&#xff0c;三维及以上数组我们使用的很少&#xff0c;二维数组我们使用得较多。说到数组&#xff0c;又不得关联到指针&#xff0c;因为他们两者的联系太紧密了。今天我们就详细介绍下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. 有效的括号 已解答 简单 相关标签 相关企业 提示 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#x…...

【橘子容器】如何构建一个docker镜像

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

EFAK kafka可视化管理工具部署使用

简介&#xff1a;EFAK是开源的可视化和管理软件。它允许您查询、可视化、提醒和探索您的指标&#xff0c;无论它们存储在何处。简单来说&#xff0c;它为您提供了将 Kafka 集群数据转换为漂亮的图形和可视化效果的工具。 环境&#xff1a;①操作系统&#xff1a;CentOS7.6&…...

Spring Boot 工程分层实战(五个分层维度)

1、分层思想 计算机领域有一句话&#xff1a;计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性&#xff0c;分层思想同样适用于Java工程架构。 分层优点是每层只专注本层工作&#xff0c;可以类比设计模式单一职责原则&#xff0c;或者经济学比较优势原…...

vscode IntelliSense Configurations

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

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的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本章节主要目标&#xff1a; 1. 补充C语言语法的不足&#xff0c;以及C是如何对C语言…...

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期

知识要点&#xff1a;变量的作用域和生存期 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组&#xff0c;内放 10 个学生成绩&#xff0c;写一个函数&#xff0c;求出平均分、最高分和最低分。 任务要求用一个函数来完…...

用 Sass 模块化系统取代全局导入,消除 1.80.0 引入的 @import 弃用警告

目录 前言 问题 import 的缺陷 命名冲突 重复导入 模块系统 use 规则 forward 规则 实际修改 前言 最初&#xff0c;Sass 使用 import 规则通过单个全局命名空间加载其他文件&#xff0c;所有内置函数也可全局使用。由于模块系统&#xff08;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项目模块化&#xff1f; &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;汽车模块化生产再聚合组装。 &#xff08;3&#xff09;Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…...

华为云云原生中间件DCS DMS 通过中国信通院与全球IPv6测试中心双重能力检测

近日&#xff0c;中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;与全球IPv6测试中心相继宣布&#xff0c;华为云的分布式缓存服务&#xff08;Distributed Cache Service&#xff0c;简称DCS&#xff09;和分布式消息服务&#xff08;Distributed Message …...

仓储海量货物人车混跑,无感定位并发能力碾压UWB上限瓶颈技术白皮书方案

仓储海量货物人车混跑&#xff0c;无感定位并发能力碾压UWB上限瓶颈技术白皮书方案一、方案概述随着现代智能仓储向高密度、高周转、无人化、集约化模式快速迭代&#xff0c;立体仓储库区普遍形成海量货物堆叠、多叉车穿梭、人员高频作业、人车密集混跑的复杂动态工况。仓储作业…...

SLAM技术路线收敛?不,多模态融合正在重启路线之争

过去几年&#xff0c;SLAM技术路线确实呈现出明确的收敛趋势&#xff1a;纯视觉SLAM逐渐成熟&#xff0c;基于3DGS的实时建图成为新范式&#xff0c;激光SLAM也固化为工业场景的稳健选择。大家一度认为&#xff0c;算法架构的选择题已经做完。然而&#xff0c;多模态融合的深入…...

神经网络从入门到精通:10个核心概念+8个实战代码,小白也能懂

神经网络从入门到精通:10个核心概念+8个实战代码,小白也能懂 副标题: 从像素到概念的函数映射,附完整训练流程实战 一、痛点:为什么神经网络这么难理解? 很多初学者第一次接触神经网络时,会被各种术语绕晕:神经元、权重、偏置、激活函数、反向传播、梯度下降… 感觉像…...

DeepSeek总结的从 DuckDB 迁移到 chDB基准测试

来源: https://github.com/chdb-io/cookbook/tree/main/migration-from-duckdbBENCHMARK.md 迁移基准测试 —— 深度探讨 本文是从 DuckDB 迁移到 chDB指南的配套文档。指南的第 5 节将环境/场景/结果/摘要内联呈现&#xff1b;本文件则包含不适合指南风格流程的部分&#xf…...

技术负责人用 Claude 这半年:工具我让全队用了,但有几件事我没敢交出去

我管一个二十来人的研发团队,之前在一家做交易系统的公司带过基础架构。 Claude Code 在我们团队铺开大概半年了,从我自己用,到全员用,到现在 进了 CI、进了评审流程。这篇不写"AI 让团队效率翻倍"那种东西。我想说的是另一件事: 作为技术负责人,这半年我真正花心思的…...

基于DSP与SC1083 ADC的光纤远程数据采集系统设计实战

1. 项目概述&#xff1a;当DSP遇上高速光缆&#xff0c;如何构建一个“快、准、稳”的远程数据采集系统在工业自动化、电力监测、超声无损检测这些领域&#xff0c;我们经常需要面对一个头疼的问题&#xff1a;如何把现场传感器采集到的大量、高速、有时甚至是微弱的模拟信号&a…...

餐饮门店AI Agent上线倒计时:错过Q3政策补贴窗口期,将多付47%算力成本(附工信部认证服务商名录)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;餐饮门店AI Agent的核心价值与政策窗口期紧迫性 在人力成本持续攀升、消费者预期快速迭代的双重压力下&#xff0c;餐饮门店正面临从“经验驱动”向“智能协同”跃迁的关键拐点。AI Agent 不再是实验室概念&am…...

抖音小店搜索排名规则及优化方法

一、抖音商城搜索排名规则1.商品相关性:商品标题、关键词与用户搜索词的匹配程度是重要因素。精准匹配的商品会在搜索结果中更靠前展示。例如&#xff0c;用户搜索"夏季连衣裙”&#xff0c;标题中明确包含该关键词且商品属性也相符的连衣裙&#xff0c;会优先被展示。商品…...

如何快速入门Play框架:5分钟搭建你的第一个Java Web应用

如何快速入门Play框架&#xff1a;5分钟搭建你的第一个Java Web应用 【免费下载链接】play1 Play framework 项目地址: https://gitcode.com/gh_mirrors/pl/play1 Play框架是一个轻量级的Java Web开发框架&#xff0c;它采用了MVC架构模式&#xff0c;提供了快速开发、热…...

unplugin-dts完整指南:从vite-plugin-dts迁移到通用插件

unplugin-dts完整指南&#xff1a;从vite-plugin-dts迁移到通用插件 【免费下载链接】unplugin-dts An unplugin for generating declaration (dts) files. 项目地址: https://gitcode.com/gh_mirrors/vi/unplugin-dts unplugin-dts是一款功能强大的通用插件&#xff0c…...