<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          拯救生命的 JavaScript 單行程序(續(xù)篇)

          共 2193字,需瀏覽 5分鐘

           ·

          2021-12-19 15:45

          ?點(diǎn)擊上方藍(lán)字關(guān)注我們,過(guò)早的優(yōu)化是罪惡之源。?????

          在上一篇文章,我展示 17 個(gè)用于 DOM、數(shù)組、對(duì)象操作的 JavaScript 單行程序。在本文中,我將繼續(xù)介紹一些用于字符串、日期處理以及其他一些有用的單行程序。

          查看上一篇文章:17 個(gè)拯救生命的 JavaScript 單行程序

          1、檢查路徑是不是相對(duì)路徑

          const?isRelative?=?(path)?=>?!/^([a-z]+:)?[\\/]/i.test(path);
          //?Examples
          isRelative('/foo/bar/baz');?//?false
          isRelative('C:\\foo\\bar\\baz');?//?false
          isRelative('foo/bar/baz.txt');?//?true
          isRelative('foo.md');?//?true

          在 nodejs 中你也可以用 path.isAbsolute(path) 來(lái)判斷是不是絕對(duì)路徑

          2、將字符串的首字母小寫(xiě)

          const?lowercaseFirst?=?(str)?=>?`${str.charAt(0).toLowerCase()}${str.slice(1)}`;
          //?Example
          lowercaseFirst('Hello?World');?//?'hello?World'

          3、 檢查字符串是否為十六進(jìn)制顏色

          const?isHexColor?=?(color)?=>?/^#([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i.test(color);

          //?Examples
          isHexColor('#012');?//?true
          isHexColor('#A1B2C3');?//?true
          isHexColor('012');?//?false
          isHexColor('#GHIJKL');?//?false

          4、給一個(gè)時(shí)間添加"am/pm"后綴

          //?`h`?是小時(shí),0?- 23
          const?suffixAmPm?=?(h)?=>?`${h?%?12?===?0???12?:?h?%?12}${h?12???'am'?:?'pm'}`;

          //?Examples
          suffixAmPm(0);?//?'12am'
          suffixAmPm(5);?//?'5am'
          suffixAmPm(12);?//?'12pm'
          suffixAmPm(15);?//?'3pm'
          suffixAmPm(23);?//?'11pm'

          5、計(jì)算兩個(gè)日期之間的間隔天數(shù)

          const?diffDays?=?(date,?otherDate)?=>?Math.ceil(Math.abs(date?-?otherDate)?/?(1000?*?60?*?60?*?24));

          //?Example
          diffDays(new?Date('2014-12-19'),?new?Date('2020-01-01'));?//?1839

          6、檢查日期是否有效

          const?isDateValid?=?(...val)?=>?!Number.isNaN(new?Date(...val).valueOf());

          isDateValid("December?17,?1995?03:24:00");?//?true

          7、檢查代碼是否在 Node.js 中運(yùn)行

          const?isNode?=?typeof?process?!==?'undefined'?&&?process.versions?!=?null?&&?process.versions.node?!=?null;

          8、檢查代碼是否在瀏覽器中運(yùn)行

          const?isBrowser?=?typeof?window?===?'object'?&&?typeof?document?===?'object';

          9、將 URL 參數(shù)轉(zhuǎn)換為對(duì)象

          const?getUrlParams?=?query?=>
          ??Array.from(new?URLSearchParams(query)).reduce(
          ????(p,?[k,?v])?=>?({
          ??????...p,
          ??????[k]:?p[k]???(Array.isArray(p[k])???p[k]?:?[p[k]]).concat(v)?:?v,
          ????}),
          ????{},
          ??);

          //?Examples
          getUrlParams(location.search);
          getUrlParams('foo=Foo&bar=Bar');?//?{?foo:?"Foo",?bar:?"Bar"?}
          //?Duplicate?key
          getUrlParams('foo=Foo&foo=Fuzz&bar=Bar');?//?{?foo:?["Foo",?"Fuzz"],?bar:?"Bar"?}

          10、檢測(cè)暗黑模式

          const?isDarkMode?=?window.matchMedia?&&?window.matchMedia('(prefers-color-scheme:?dark)').matches;

          11、復(fù)制到剪貼板

          const?copyToClipboard?=?(text)?=>?navigator.clipboard.writeText(text);
          //?示例
          copyToClipboard("Hello?World");

          12、將 RGB 轉(zhuǎn)換為十六進(jìn)制

          const?rgbToHex?=?(r,?g,?b)?=>?"#"?+?((1?<24)?+?(r?<16)?+?(g?<8)?+?b).toString(16).slice(1)?;
          //?示例
          rgbToHex(0,?51,?255);?//?#0033ff

          13、生成隨機(jī)十六進(jìn)制顏色

          const?randomColor?=?()?=>?`#${Math.random().toString(16).slice(2,?8).padEnd(6,?'0')}`;
          //?或者
          const?randomColor?=?()?=>?`#${(~~(Math.random()?*?(1?<24))).toString(16)}`;

          14、生成隨機(jī) IP 地址

          const?randomIp?=?()?=>?Array(4).fill(0)
          ??.map((_,?i)?=>?Math.floor(Math.random()?*?255)?+?(i?===?0???1?:?0)?)
          ??.join('.');
          //?示例
          randomIp();?//?175.89.174.131

          15、使用 Node 加密模塊生成隨機(jī)字符串

          const?randomStr?=?()?=>?require('crypto').randomBytes(32).toString('hex');
          本文完。

          ?

          親愛(ài)的讀者,

          感謝你的時(shí)間。我們下期再見(jiàn)!

          如果你在評(píng)論區(qū)留下的想法,我會(huì)十分高興。

          ?

          往期精彩回顧:

          成為現(xiàn)代 JavaScript 大師的 3 個(gè)小技巧
          17 個(gè)拯救生命的 JavaScript 單行程序
          移動(dòng)端瀏覽器常用的 meta 標(biāo)簽匯總
          8個(gè)必知的 SEO 優(yōu)化重要元標(biāo)簽
          Javascript 數(shù)組及其方法詳解

          關(guān)注公眾號(hào)回復(fù)【資源】可免費(fèi)領(lǐng)取學(xué)習(xí)資料!



          左手代碼右手磚,拋磚引玉

          記得點(diǎn)贊,分享,在看加關(guān)注喲


          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91久久久免费 | 久久久久久网站 | 91cn.xx | 日韩无码一卡 | 理论在线视频 |