js 實戰小案例

實戰

時間

js 格式化時間

	<script type="text/javascript">function formatDate(date) {  let year = date.getFullYear();  let month = String(date.getMonth() + 1).padStart(2, '0'); // getMonth() 返回的月份是從0開始的,所以要加1,并使用padStart確保總是兩位數  let day = String(date.getDate()).padStart(2, '0'); // 使用padStart確保總是兩位數  return `${year}-${month}-${day}`;  }  // 使用示例  let date = new Date(); // 你可以傳遞任何你想要的日期對象  console.log(formatDate(date)); // 輸出格式為 "YYYY-MM-DD" 的日期字符串</script>

判斷img圖片是否存在,不存在給默認

 <img src="${Config.carouselData[i].ext.avatar}" onerror="javascript:this.src='https://game.gtimg.cn/images/fz/cp/a20231206fsn0o2/tx_img.png'" alt="" />

字符串中間“***”代替

 hideString: function (name) {let newStr = '';if (name){if (name.length <= 2) {newStr = name + '*';} else if (name.length >= 3 && name.length <= 4) {let char = '***';newStr = name.substr(0, 1) + char + name.substr(-1, 1);} else if (name.length > 4) {let char = '***';newStr = name.substr(0, 2) + char + name.substr(-2, 2);} else {newStr = name;}}else {newStr = "**";}return newStr;},

是否是Android系統

isAndroid: function () {return /android/i.test(window.navigator.userAgent.toLowerCase());
},

HTML 標簽轉實體

htmlEncode: function (str) {var simpleStr = str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/'/g, '&#39;').replace(/"/g, '&quot;');return simpleStr;
},

HTML實體 轉標簽

htmlDecode: function (str) {var simpleStr = str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#39;/g, "'").replace(/&quot;/g, '"');return simpleStr;
}

json轉對象

JSON.parse(obj)

對象轉JSON

JSON.stringify()

JSON.stringify()的幾種妙用

  1. 判斷數組是否包含某對象,或者判斷對象是否相等
//判斷數組是否包含某對象
let data = [{name:'echo'},{name:'聽風是風'},{name:'天子笑'},],val = {name:'天子笑'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true//判斷兩數組/對象是否相等
let a = [1,2,3],b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true
  1. 讓localStorage/sessionStorage可以存儲對象

localStorage/sessionStorage默認只能存儲字符串,而實際開發中,我們往往需要存儲的數據多為對象類型,那么這里我們就可以在存儲時利用json.stringify()將對象轉為字符串,而在取緩存時,只需配合json.parse()轉回對象即可。

//存
function setLocalStorage(key,val){window.localStorage.setItem(key,JSON.stringify(val));
};
//取
function getLocalStorage(key){let val = JSON.parse(window.localStorage.getItem(key));return val;
};
//測試
setLocalStorage('demo',[1,2,3]);
let  a = getLocalStorage('demo');//[1,2,3]

在這里插入圖片描述
3. 實現對象深拷貝

實際開發中,如果怕影響原數據,我們常深拷貝出一份數據做任意操作,其實使用JSON.stringify()與JSON.parse()來實現深拷貝是很不錯的選擇。

//深拷貝
function deepClone(data) {let _data = JSON.stringify(data),dataClone = JSON.parse(_data);return dataClone;
};
//測試
let arr = [1,2,3],_arr = deepClone(arr);
arr[0] = 2;
console.log(arr,_arr)//[2,2,3]  [1,2,3]

JSON.stringify()與toString()的區別

這兩者雖然都可以將目標值轉為字符串,但本質上還是有區別的,比如

let arr = [1,2,3];
JSON.stringify(arr);//'[1,2,3]'
arr.toString();//1,2,3

其次,JSON.stringify()的受眾更多是對象,而toString()雖然可以將數組轉為字符串,但并不能對{name:‘天子笑’}這類對象實現你想要的操作,它的受眾更多是數字。

那么大概整理這么多了,后面工作中遇到再添加吧。

獲取url

獲取url參數
function queryURLParams(URL) {var url = URL.split("?")[1];var obj = {}; // 聲明參數對象var arr = url.split("&"); // 以&符號分割為數組for (var i = 0; i < arr.length; i++) {var arrNew = arr[i].split("="); // 以"="分割為數組obj[arrNew[0]] = arrNew[1];}return obj;
}
獲取去重后的url
function getUniqueUrl(url) {  // 解析URL的查詢字符串部分  const queryParams = new URLSearchParams(url.split('?')[1] || '');  // 創建一個Map來自動去重  const uniqueParams = new Map(queryParams.entries());  // 將去重后的參數轉換回字符串  const uniqueQueryString = new URLSearchParams(uniqueParams).toString();  // 如果有參數,則重新構建URL;否則,返回原始URL(不包含查詢字符串)  return uniqueQueryString ? `${url.split('?')[0]}?${uniqueQueryString}` : url;  
}  // 使用示例  
const url = location.href;  
const uniqueUrl = getUniqueUrl(url);  console.log(uniqueUrl);  

在這里插入圖片描述

獲取指定的url參數的值
	function getParams(param){try{if (!param) {return '參數不能為空';}// 創建 URLSearchParams 對象并傳入要處理的 URLconst params = new URLSearchParams(window.location.search);// 通過 get() 方法獲取特定參數的值const value = params.get(param); // 'paramName'為需要獲取的參數名稱//console.log(value);return value;}catch (e){console.log(e);}}console.log(getParams('a'));
url解碼與編碼
/**
isTrue  true 解碼,false 轉碼*/
function urlCode(url,isTrue = true){let urls = "";if (isTrue) {urls = decodeURIComponent(uniqueUrl);	}else{urls = encodeURIComponent(uniqueUrl);	}return urls;
}

倒計時為0是才能點擊

css樣式

    .disabled {pointer-events: none; /* 禁止點擊 */}

js文件

    $("#checkBigPag").click( function(event){var i=3;$(".clock1").html("3");var timehwnd=setInterval(function () {i--;if(i <= 0){$('#bigRed').removeClass('disabled'); // 移除 disabled 類名,表示可再次點擊$(".clock1").html("0");clearInterval(timehwnd);}else{$('#bigRed').addClass('disabled');$(".clock1").html(""+i+"");}},1000);} );

在這里插入圖片描述

正則

手機號(以中國大陸的手機號碼為例,支持13、14、15、16、17、18、19開頭的號碼):

/^(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])\d{8}$/

郵箱:

/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/

網址:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

用戶名(以字母或數字開頭,可以包含字母、數字、下劃線,長度在6~18位之間):

/^[a-zA-Z0-9_]{6,18}$/

身份證(15位或18位,18位身份證包含校驗碼):

/^(^[1-9]\d{5}(?:\d{18}|?:\d{15})$)/

數字:

/^\d+$/

字母:

/^[a-zA-Z]+$/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714345.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714345.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【go從入門到精通】go包,內置類型和初始化順序

大家好&#xff0c;這是我給大家準備的新的一期專欄&#xff0c;專門講golang&#xff0c;從入門到精通各種框架和中間件&#xff0c;工具類庫&#xff0c;希望對go有興趣的同學可以訂閱此專欄。 go基礎 。 Go文件名&#xff1a; 所有的go源碼都是以 ".go" 結尾&…

Mamba 環境安裝:causal-conv1d和mamba-ssm報錯解決辦法

問題描述&#xff1a; 在執行命令 pip install causal_conv1d 和 mamba_ssm 出錯&#xff1a; 解決方案&#xff1a; 1、使用網友配置好的Docker環境&#xff0c;參考&#xff1a;解決causal_conv1d和mamba_ssm無法安裝 -&#xff1e; 直接使用Mamba基礎環境docker鏡像 DockH…

java實現圖片轉pdf,并通過流的方式進行下載(前后端分離)

首先需要導入相關依賴&#xff0c;由于具體依賴本人也不是記得很清楚了&#xff0c;所以簡短的說一下。 iText&#xff1a;PDF 操作庫&#xff0c;用于創建和操作 PDF 文件。可通過 Maven 或 Gradle 引入 iText 依賴。 MultipartFile&#xff1a;Spring 框架中處理文件上傳的類…

一臺工控機的能量

使用Docker搭建EPICS的IOC記錄 Zstack EPICS Archiver在小課題組的使用經驗 以前電子槍調試&#xff0c;用一臺工控機跑起束測后臺&#xff0c;這次新光源用的電子槍加工回來又是測試&#xff0c;又是用一臺工控機做起重復的事&#xff0c;不過生命在于折騰&#xff0c;重復的…

stm32——hal庫學習筆記(IIC)

一、IIC總線協議介紹&#xff08;掌握&#xff09; 二、AT24C02介紹&#xff08;了解&#xff09; 三、AT24C02讀寫時序&#xff08;掌握&#xff09; 四、AT24C02驅動步驟&#xff08;掌握&#xff09; 五、編程實戰&#xff08;掌握&#xff09; myiic.c #include "./B…

汽車虛擬仿真技術的實現、應用和未來

汽車虛擬仿真技術是一種利用計算機模擬汽車運行的技術&#xff0c;以實現對汽車行為的分析、評估和改進。汽車虛擬仿真技術是汽車工業中重要的開發設計和測試工具&#xff0c;可以大大縮短產品研發周期、降低研發成本和提高產品質量。本文將從汽車虛擬仿真技術的實現過程、應用…

Ubuntu18.04 系統上配置并運行SuperGluePretrainedNetwork(僅使用CPU)

SuperGlue是Magic Leap在CVPR 2020上展示的研究項目&#xff0c;它是一個圖神經網絡&#xff08;Graph Neural Network&#xff09;和最優匹配層&#xff08;Optimal Matching layer&#xff09;的結合&#xff0c;訓練用于對兩組稀疏圖像特征進行匹配。這個項目提供了PyTorch代…

前端的文字的字體應該如何設置

要設置文字的字體&#xff0c;在CSS中使用font-family屬性。這個屬性可以接受一個或多個字體名稱作為其值&#xff0c;瀏覽器會按照列表中的順序嘗試使用這些字體渲染文本。如果第一個字體不可用&#xff0c;瀏覽器會嘗試使用列表中的下一個字體&#xff0c;依此類推。 字體設…

iOS消息發送流程

Objc的方法調用基于消息發送機制。即Objc中的方法調用&#xff0c;在底層實際都是通過調用objc_msgSend方法向對象消息發送消息來實現的。在iOS中&#xff0c; 實例對象的方法主要存儲在類的方法列表中&#xff0c;類方法則是主要存儲在原類中。 向對象發送消息&#xff0c;核心…

推薦一個屏幕上鼠標高亮顯示的小工具

在視頻錄制等特定場景下&#xff0c;很多人希望在點擊鼠標時能夠在屏幕上及時進行顯示&#xff0c;便于別人發現&#xff0c;提高別人的注意力。 因此&#xff0c;很多錄屏軟件中都內含顯示鼠標點擊功能。那如果不支持該怎么辦呢&#xff1f;其實&#xff0c;也是可以通過其他工…

Python 實現Excel自動化辦公(上)

在Python 中你要針對某個對象進行操作&#xff0c;是需要安裝與其對應的第三方庫的&#xff0c;這里對于Excel 也不例外&#xff0c;它也有對應的第三方庫&#xff0c;即xlrd 庫。 什么是xlrd庫 Python 操作Excel 主要用到xlrd和xlwt這兩個庫&#xff0c;即xlrd是讀Excel &am…

算法刷題day20:二分系列

目錄 引言概念一、借教室二、分巧克力三、管道四、技能升級五、冶煉金屬六、數的范圍七、最佳牛圍欄 引言 這幾天一直在做二分的題&#xff0c;都是上了難度的題目&#xff0c;本來以為自己的二分水平已經非常熟悉了&#xff0c;沒想到還是糊涂了一兩天才重新想清楚&#xff0…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的口罩識別系統(Python+PySide6界面+訓練代碼)

摘要&#xff1a;開發口罩識別系統對于提升公共衛生安全和疫情防控具有重要意義。本篇博客詳細介紹了如何利用深度學習構建一個口罩識別系統&#xff0c;并提供了完整的實現代碼。該系統基于強大的YOLOv8算法&#xff0c;并結合了YOLOv7、YOLOv6、YOLOv5的對比&#xff0c;給出…

Linux:syslog()的使用和示例

man手冊 命令行man openlog即可查看;寫的非常詳細&#xff0c;看完其實就懂了。 NAME closelog, openlog, syslog, vsyslog - send messages to the system logger SYNOPSIS #include <syslog.h> void openlog(const char *ident, int option, int facili…

刷題筆記day27-回溯算法2

216. 組合總和 III 這個思路還是&#xff0c;三部曲&#xff1a; 終止條件處理單層節點回溯節點 題中說的是&#xff0c;1到9的數&#xff0c;不能有重復。 k個數&#xff0c;和為n。 那么只要 len(path) k 的時候&#xff0c;判斷 n 為0&#xff0c;就可以入切片了。 fun…

如何更好的引導大語言模型進行編程的高效開發流程?

這張圖片展示了一種如何更好地引導大語言模型進行編程的方法。 首先&#xff0c;最簡單也是最有效的方法是讓大語言模型重復運行多次&#xff0c;每次增加一些額外的信息&#xff0c;直到獲得想要的結果。這種方法雖然簡單&#xff0c;但可能需要多次嘗試才能得到滿意的結果。…

2024綠色能源、城市規劃與環境國際會議(ICGESCE 2024)

2024綠色能源、城市規劃與環境國際會議(ICGESCE 2024) 一、【會議簡介】 隨著全球氣候變化和環境問題日益嚴重&#xff0c;綠色能源和可持續發展已成為全球關注的焦點。本次會議旨在匯聚全球在綠色能源、城市規劃與環境領域的專家、學者和實踐者&#xff0c;共同探討和分享關于…

Vue.js大師: 構建動態Web應用的全面指南

VUE ECMAScript介紹什么是ECMAScriptECMAScript 和 JavaScript 的關系ECMAScript 6 簡介 ES6新特性let基本使用const不定參數箭頭函數對象簡寫模塊化導出導入a.jsb.jsmain.js Vue簡介MVVM 模式的實現者——雙向數據綁定模式 Vue環境搭建在頁面引入vue的js文件即可。創建div元素…

1、jQuery介紹、css()、選擇器、事件、動畫

一、jQuery介紹&#xff1f; 1、什么是jQuery&#xff1f; 是一個JavaScript函數庫 2、jQuery特點 寫的少&#xff0c;做的多 3、jQuery的安裝 直接下載引入 <script src"jquery-1.10.2.min.js"></script>通過cdn引入 <script src"https…

python自動化之項目架構搭建與思路講解(第二天)

1.自動化測試的概念 自動化測試是指使用自動化工具和腳本來執行測試任務,以驗證軟件或系統的正確性和穩定性。它可以提高測試的效率和準確性,并節約時間和成本。 2.自動化腳本編寫的思路 xmind文檔如有需要,可在資源里自行下載 3.項目代碼工程創建 lib :基本代碼庫包 …