項(xiàng)目中常用的方法

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("獲取字符串長度失敗,字符串不存在R省燃异!請檢查!继蜡!----->");

? ? return null;

? },

? /**鼠標(biāo)點(diǎn)擊延遲回俐,name:節(jié)點(diǎn)的類名逛腿,delay:延遲時間(ms) */

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

? ? let nodeArr;

? ? nodeArr = document.getElementsByClassName(name);

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

? ? ? console.warn("鼠標(biāo)點(diǎn)擊延遲添加失敗,節(jié)點(diǎn)不存在=銎摹5ツ!灵莲!請查看----->");

? ? ? return;

? ? }

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

? ? ? let node = nodeArr[i];

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

? ? ? setTimeout(() => {

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

? ? ? }, delay);

? ? }

? },

? /**禁用點(diǎn)擊事件 */

? disableClick: (name) => {

? ? let node;

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

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

? },

? /**啟用點(diǎn)擊事件 */

? 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("計(jì)算的時間", 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]";

? },

? // 二次貝塞爾,用于做曲線運(yùn)動

? 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;

? },

? /**計(jì)算兩個時間戳相差的時間,小時政冻,分枚抵,秒 */

? 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;

? },

? //計(jì)算時間多少天時分秒

? intervalOneTime: (time) => {

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

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

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

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

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

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

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

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

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

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

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

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

? ? let result1 = {

? ? ? days: days,

? ? ? hours: hours,

? ? ? minutes: minutes,

? ? ? seconds: seconds,

? ? };

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

? ? return result1;

? },

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

? isWX() {

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

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

? },

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

? getChannel() {

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

? },

? /**

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

? * @param num 數(shù)字

? * @param length 位數(shù)

? * @private

? */

? prefixInteger: (num, length) => {

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

? },

? /**

? * 隨機(jī)獲取數(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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市明场,隨后出現(xiàn)的幾起案子汽摹,更是在濱河造成了極大的恐慌,老刑警劉巖苦锨,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逼泣,死亡現(xiàn)場離奇詭異,居然都是意外死亡舟舒,警方通過查閱死者的電腦和手機(jī)拉庶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秃励,“玉大人氏仗,你說我怎么就攤上這事《嵯剩” “怎么了皆尔?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長币励。 經(jīng)常有香客問我慷蠕,道長,這世上最難降的妖魔是什么食呻? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任流炕,我火速辦了婚禮,結(jié)果婚禮上搁进,老公的妹妹穿的比我還像新娘浪感。我一直安慰自己,他們只是感情好饼问,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著揭斧,像睡著了一般莱革。 火紅的嫁衣襯著肌膚如雪峻堰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天盅视,我揣著相機(jī)與錄音捐名,去河邊找鬼。 笑死闹击,一個胖子當(dāng)著我的面吹牛镶蹋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赏半,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贺归,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了断箫?” 一聲冷哼從身側(cè)響起拂酣,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仲义,沒想到半個月后婶熬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埃撵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年赵颅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂刘。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡饺谬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸳惯,到底是詐尸還是另有隱情商蕴,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布芝发,位于F島的核電站绪商,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辅鲸。R本人自食惡果不足惜格郁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望独悴。 院中可真熱鬧例书,春花似錦、人聲如沸刻炒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坟奥。三九已至树瞭,卻和暖如春拇厢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晒喷。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工孝偎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凉敲。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓衣盾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爷抓。 傳聞我的和親對象是個殘疾皇子势决,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容