項目中常用的方法

const tool = {

? // 獲取網(wǎng)頁地址參數(shù)

? getQueryString: (name) => {

? ? const search = window.location.search;

? ? const matched = search

? ? ? .slice(1)

? ? ? .match(new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"));

? ? return search.length ? matched && matched[2] : null;

? },

? /**

? * 切除字符串,當(dāng)字符串大于最大長度時,截取字符串拼接'...'

? */

? getSliceStr: (str, maxLength) => {

? ? if (str) {

? ? ? if (str.length > maxLength) {

? ? ? ? str = str.slice(0, maxLength) + "...";

? ? ? }

? ? }

? ? return str;

? },

? /**獲取字符串長度,1個中文字符算2個長度 */

? getStrLength: (str) => {

? ? if (str) {

? ? ? var count = str.length;

? ? ? for (var i = 0; i < str.length; i++) {

? ? ? ? if (str.charCodeAt(i) > 255) {

? ? ? ? ? count++;

? ? ? ? }

? ? ? }

? ? ? return count;

? ? }

? ? console.error("獲取字符串長度失敗,字符串不存在?。≌垯z查??!----->");

? ? return null;

? },

? /**鼠標(biāo)點擊延遲,name:節(jié)點的類名,delay:延遲時間(ms) */

? clickDelay: (name, delay = 1200) => {

? ? let nodeArr;

? ? nodeArr = document.getElementsByClassName(name);

? ? if (!nodeArr || nodeArr.length <= 0) {

? ? ? console.warn("鼠標(biāo)點擊延遲添加失敗,節(jié)點不存在?。。?!請查看----->");

? ? ? return;

? ? }

? ? for (let i = 0; i < nodeArr.length; i++) {

? ? ? let node = nodeArr[i];

? ? ? node.style.pointerEvents = "none";

? ? ? setTimeout(() => {

? ? ? ? if (node) node.style.pointerEvents = "";

? ? ? }, delay);

? ? }

? },

? /**禁用點擊事件 */

? disableClick: (name) => {

? ? let node;

? ? node = document.getElementsByClassName(name)[0];

? ? node.style.pointerEvents = "none";

? },

? /**啟用點擊事件 */

? enableClick: (name) => {

? ? let node;

? ? node = document.getElementsByClassName(name)[0];

? ? node.style.pointerEvents = "";

? },

? /**

? * 在一個數(shù)組中尋找對應(yīng)值的元素

? * @param {尋找的值} value

? * @param {數(shù)組列表} list

? * @param {尋找的值對應(yīng)的鍵值} key

? */

? findData(value, list, key) {

? ? const result = list.filter((i) => i[key] == value);

? ? if (!result || result.length == 0)

? ? ? throw new Error(`不存在key=${key}的任務(wù),請檢查接口`);

? ? return result[0];

? },

? /**

? * 獲取日期-日-月

? * @param {2020-08-13} date

? *

? * return 08月13日

? */

? getDateToDayMonth: (date) => {

? ? let dateStrs = date.split("-");

? ? return dateStrs[1] + "月" + dateStrs[2] + "日";

? },

? /**根據(jù)時間戳獲取日期-月-日 */

? getDateDayMonthByTime: (time) => {

? ? let date = new Date(time);

? ? let year = date.getFullYear();

? ? let month = date.getMonth() + 1;

? ? let day = date.getDate();

? ? let hour = date.getHours();

? ? let minutes = date.getMinutes();

? ? let seconds = date.getSeconds();

? ? month = month < 10 ? "0" + month : month;

? ? day = day < 10 ? "0" + day : day;

? ? hour = hour < 10 ? "0" + hour : hour;

? ? minutes = minutes < 10 ? "0" + minutes : minutes;

? ? // date = year + '/' + month + '/' + day + ' ' + hour + ':' + minutes;

? ? let data = {

? ? ? year: year,

? ? ? month: month,

? ? ? day: day,

? ? ? hours: hour,

? ? ? minutes: minutes,

? ? ? seconds: seconds,

? ? };

? ? console.log("計算的時間", data);

? ? return data;

? },

? /**通過秒數(shù)獲取日期 */

? getDateBySeconds: (value) => {

? ? var seconds = parseInt(value); // 秒

? ? var minutes = 0; // 分

? ? var hour = 0; // 小時

? ? if (seconds > 60) {

? ? ? minutes = parseInt(seconds / 60);

? ? ? seconds = parseInt(seconds % 60);

? ? ? if (minutes > 60) {

? ? ? ? hour = parseInt(minutes / 60);

? ? ? ? minutes = parseInt(minutes % 60);

? ? ? }

? ? }

? ? let data = {

? ? ? hours: hour,

? ? ? minutes: minutes,

? ? ? seconds: seconds,

? ? };

? ? // console.log('time-=--->',value,data)

? ? return data;

? },

? isArray: (o) => {

? ? return Object.prototype.toString.call(o) == "[object Array]";

? },

? // 二次貝塞爾,用于做曲線運動

? bezier: (t, p0, p1, p2) => {

? ? // (1-t)^2 P0 + 2(1-t)tP1+ t^2P2

? ? return Math.pow(1 - t, 2) * p0 + 2 * (1 - t) * t * p1 + Math.pow(t, 2) * p2;

? },

? /**計算兩個時間戳相差的時間,小時,分,秒 */

? compareTime: (startTime, endTime) => {

? ? let between = (endTime - startTime) / 1000;

? ? let hours = Math.floor((between % (24 * 36000)) / 3600);

? ? let minutes = Math.floor((between % 3600) / 60);

? ? let seconds = Math.floor((between % 60) / 60);

? ? let date;

? ? date = {

? ? ? hours: hours,

? ? ? minutes: minutes,

? ? ? seconds: seconds,

? ? };

? ? return date;

? },

? //計算時間多少天時分秒

? intervalOneTime: (time) => {

? ? var date3 = time; //時間差的毫秒數(shù)

? ? //計算出相差天數(shù)

? ? var days = Math.floor(date3 / (24 * 3600 * 1000));

? ? //計算出小時數(shù)

? ? var leave1 = date3 % (24 * 3600 * 1000); //計算天數(shù)后剩余的毫秒數(shù)

? ? var hours = Math.floor(leave1 / (3600 * 1000));

? ? //計算相差分鐘數(shù)

? ? var leave2 = leave1 % (3600 * 1000); //計算小時數(shù)后剩余的毫秒數(shù)

? ? var minutes = Math.floor(leave2 / (60 * 1000));

? ? //計算相差秒數(shù)

? ? var leave3 = leave2 % (60 * 1000); //計算分鐘數(shù)后剩余的毫秒數(shù)

? ? var seconds = Math.floor(leave3 / 1000);

? ? let result1 = {

? ? ? days: days,

? ? ? hours: hours,

? ? ? minutes: minutes,

? ? ? seconds: seconds,

? ? };

? ? console.log("單個時間計算的時間");

? ? return result1;

? },

? /**判斷是否是微信環(huán)境 */

? isWX() {

? ? var ua = window.navigator.userAgent.toLowerCase();

? ? return ua.match(/MicroMessenger/i) == "micromessenger";

? },

? /**獲取渠道參數(shù) */

? getChannel() {

? ? return tool.getQueryString("channel");

? },

? /**

? * 數(shù)字補0 例:(num = 2, length = 2) -> 02

? * @param num 數(shù)字

? * @param length 位數(shù)

? * @private

? */

? prefixInteger: (num, length) => {

? ? return (Array(length).join("0") + num).slice(-length);

? },

? /**

? * 隨機獲取數(shù)組中六個值

? */

? getRandomArrayElements: (arr, count) => {

? ? var shuffled = arr.slice(0),

? ? ? i = arr.length,

? ? ? min = i - count,

? ? ? temp,

? ? ? index;

? ? while (i-- > min) {

? ? ? index = Math.floor((i + 1) * Math.random());

? ? ? temp = shuffled[index];

? ? ? shuffled[index] = shuffled[i];

? ? ? shuffled[i] = temp;

? ? }

? ? return shuffled.slice(min);

? },

? /**

? * 格式化時間 format Time - type 01

? * @param {Number} time

? */

? formatTime: (time, type = "") => {

? ? time = parseInt(time);

? ? if (!time) return null;

? ? const yy = new Date(time).getFullYear();

? ? const mm = new Date(time).getMonth() + 1;

? ? const dd = new Date(time).getDate();

? ? let t2 = new Date(time).getHours() + ""; //獲取時

? ? let t3 = new Date(time).getMinutes() + ""; //獲取分

? ? let t1;

? ? if (type === "s") {

? ? ? t1 = `${yy}年${mm}月${dd}日${t2}時${t3}秒`;

? ? } else if (type === "h") {

? ? ? t1 = `${yy}年${mm}月${dd}日${t2}時`;

? ? } else {

? ? ? t1 = `${yy}年${mm}月${dd}日`;

? ? }

? ? // console.log(new Date(time).toLocaleDateString())

? ? // const t1 = new Date(time).toLocaleDateString() + ''//獲取年月日

? ? // const t4 = new Date(time).getMilliseconds() + ''//獲取秒

? ? // if (parseInt(t2) < 10) t2 = '0'+t2

? ? // if (parseInt(t3) < 10) t3 = '0'+t3

? ? // time = t1 + ' ' + t2 + ':' + t3

? ? time = t1;

? ? // console.log('time', time, t1 + ' ' + t2 + ':' + t3)

? ? return time;

? },

? throttle: (fun, delay = 2000) => {

? ? let last, deferTimer;

? ? return function () {

? ? ? let now = +new Date();

? ? ? if (last && now < last + delay) {

? ? ? ? clearTimeout(deferTimer);

? ? ? ? deferTimer = setTimeout(() => {

? ? ? ? ? last = now;

? ? ? ? }, delay);

? ? ? } else {

? ? ? ? last = now;

? ? ? ? fun.apply(this, arguments);

? ? ? }

? ? };

? },

};

export default tool;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容