整合營銷服務商

          電腦端+手機端+微信端=數(shù)據同步管理

          免費咨詢熱線:

          13條高效實用的JavaScript單行代碼,關注收

          13條高效實用的JavaScript單行代碼,關注收藏哦

          avaScript可以實現(xiàn)很多令人驚奇的事!

          從復雜的框架到處理API,有太多的東西可以學習。

          甚至,僅用一行代碼,它也能完成一些很棒的工作。

          不信?那么請看這13條JavaScript單行代碼,用上它們,會讓你看起來特別專業(yè)!

          1. 獲取隨機布爾值(true/false)

          使用Math.random()方法可以讓函數(shù)返回布爾值(true或false)。Math.random會創(chuàng)建一個介于0和1之間的隨機數(shù),然后我們檢查這個數(shù)是大于還是小于0.5。也就是說,有50%/50%的幾率得到true或false。

          以下JS代碼塊顯示了如何使用Math.Random方法獲取隨機布爾值。

          const randomBoolean = () => Math.random() >= 0.5;
          console.log(randomBoolean());
          // Result: a 50/50 change on returning true of false
          

          2. 檢查指定日期是否是工作日

          我們可以通過此方法來檢查函數(shù)中提供的日期是工作日還是周末。

          以下JS代碼塊顯示了如何編寫一個返回指定日期是工作日還是周末的函數(shù)。

          const isWeekday = (date) => date.getDay() % 6 !== 0;
          console.log(isWeekday(new Date(2021, 0, 11)));
          // Result: true (Monday)
          console.log(isWeekday(new Date(2021, 0, 10)));
          // Result: false (Sunday)
          

          3. 反轉字符串

          有兩種不同的方式可以反轉字符串。使用split(),reverse()和join()方法是最簡單的方法之一。

          以下JS代碼塊顯示了如何反轉字符串。

          const reverse = str => str.split('').reverse().join('');
          reverse('hello world');     
          // Result: 'dlrow olleh'
          

          4. 檢查當前tab是否在視圖/焦點中

          我們可以使用document.hidden屬性來檢查當前tab是否在視圖/焦點中。

          以下JS代碼塊顯示了如何使用文檔的hidden屬性來獲取當前tab是否在視圖/焦點中。

          const isBrowserTabInView = () => document.hidden;
          isBrowserTabInView();
          // Result: returns true or false depending on if tab is in view / focus
          

          5. 檢查數(shù)字是偶數(shù)還是奇數(shù)

          可以通過使用取模運算符(%)來解決這個超簡單的任務。如果你對此還不太熟悉,那么Stack Overflow上就有直觀的說明。

          以下JS代碼塊顯示了如何使用模運算符來檢查數(shù)字是偶數(shù)還是奇數(shù)。

          const isEven = num => num % 2 === 0;
          console.log(isEven(2));
          // Result: true
          console.log(isEven(3));
          // Result: false
          

          6. 從日期中獲取時間

          通過使用.toTimeString()方法并在合適的位置切割字符串,我們就可以從指定的日期中獲取時間,也可以獲取當前時間。

          以下JS代碼塊顯示了如何通過toTimeString方法和切割字符串從日期中獲取時間。

          const timeFromDate = date => date.toTimeString().slice(0, 8);
          console.log(timeFromDate(new Date(2021, 0, 10, 17, 30, 0))); 
          // Result: "17:30:00"
          console.log(timeFromDate(new Date()));
          // Result: will log the current time
          

          7. 截取數(shù)字小數(shù)點后的固定幾位

          使用Math.pow()方法,可以截取數(shù)字小數(shù)點后的固定幾位。

          以下JS代碼塊顯示了如何使用Math.Power方法舍入某個小數(shù)點。

          const toFixed = (n, fixed) => ~~(Math.pow(10, fixed) * n) / Math.pow(10, fixed);
          // Examples
          toFixed(25.198726354, 1);       // 25.1
          toFixed(25.198726354, 2);       // 25.19
          toFixed(25.198726354, 3);       // 25.198
          toFixed(25.198726354, 4);       // 25.1987
          toFixed(25.198726354, 5);       // 25.19872
          toFixed(25.198726354, 6);       // 25.198726
          

          8. 檢查元素當前是否處于焦點

          我們可以使用document.activeElement屬性來檢查一個元素當前是否處于焦點。

          以下JS代碼塊顯示了如何使用文檔對象上的activeElement屬性檢查元素當前是否處于焦點。

          const elementIsInFocus = (el) => (el === document.activeElement);
          elementIsInFocus(anyElement)
          // Result: will return true if in focus, false if not in focus
          

          9. 檢查當前用戶是否支持touch事件

          以下JS代碼塊顯示了如何檢查當前用戶是否支持touch事件。

          const touchSupported = () => {
            ('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch);
          }
          console.log(touchSupported());
          // Result: will return true if touch events are supported, false if not
          

          10. 檢查當前用戶是否使用Apple上

          可以使用navigator.platform來檢查當前用戶是否使用Apple設備。

          以下JS代碼塊顯示了如何檢查用戶當前是否在Apple設備上。

          const isAppleDevice = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
          console.log(isAppleDevice);
          // Result: will return true if user is on an Apple device
          

          11. 滾動到頁面頂部

          window.scrollTo()方法通過x坐標和y坐標實現(xiàn)滾動。如果將它們設置為0,則將滾動到頁面頂部。

          注意:Internet Explorer不支持.scrollTo()方法。

          以下JS代碼塊顯示了如何使用scrollTo方法將瀏覽器滾動至頂部。

          const goToTop = () => window.scrollTo(0, 0);
          goToTop();
          // Result: will scroll the browser to the top of the page
          

          12. 獲取參數(shù)的平均值

          可以使用reduce方法獲取函數(shù)參數(shù)的平均值。

          以下JS代碼塊顯示了如何使用reduce方法獲取參數(shù)的平均值。

          const average = (...args) => args.reduce((a, b) => a + b) / args.length;
          average(1, 2, 3, 4);
          // Result: 2.5
          

          13. 轉換華氏/攝氏

          最后一個2合1了!

          處理溫度有時會暈頭轉向。這兩個函數(shù)則能幫助大家將華氏溫度轉換為攝氏溫度,以及將攝氏溫度轉換為華氏溫度。

          以下JS代碼塊顯示了如何將華氏溫度轉換為攝氏溫度,以及反向的轉換。

          const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;
          const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9;
          // Examples
          celsiusToFahrenheit(15);    // 59
          celsiusToFahrenheit(0);     // 32
          celsiusToFahrenheit(-20);   // -4
          fahrenheitToCelsius(59);    // 15
          fahrenheitToCelsius(32);    // 0

          喜歡本文,請關注,點贊,收藏哦。


          大的激光脈沖聚焦到一個小型晶體中,產生了糾纏光子對。隨后,糾纏光子對被發(fā)送到遠程站點。在遠程站點對它們的測量,會產生隨機比特。

          phys.org網站當?shù)貢r間3月9日報道,美國科羅拉多大學(CU)/美國國家標準技術研究所(NIST)和日本電信電話株式會社(NTT)的研究人員開發(fā)了一種隨機數(shù)生成協(xié)議。該協(xié)議適配多種量子系統(tǒng),為開發(fā)更安全、更高效的隨機數(shù)生成器奠定了基礎。

          研究人員Lynden Krister Shalm說:“我們一直希望了解如何應用量子糾纏效應構建全新的隨機數(shù)生成器。”

          此前,Shalm等人曾嘗試利用量子糾纏的非局域特性,以獨立于設備的方式生成隨機比特。系統(tǒng)的安全性主要取決于這樣一個事實:黑客發(fā)送信息的速度無法超越光速。

          Shalm說:“我們設計的系統(tǒng)與依賴物理過程(如放射性衰變)或數(shù)學算法的常規(guī)隨機數(shù)生成器有顯著區(qū)別。”

          基于物理過程或數(shù)學算法的隨機數(shù)生成器需要滿足大量額外假設條件。為了使用量子糾纏產生高度安全的隨機比特,新系統(tǒng)必須消耗大量隨機性,而這將大大降低系統(tǒng)效率。

          “在2017年初訪問CU/NIST時,我很興奮地得知,Shalm團隊已經有能力完成設備無關的隨機數(shù)生成。”研究人員Yanbao Zhang說,“但這樣的實驗消耗了太多隨機比特,卻只能產生少量高質量的認證隨機比特。因此,我們希望推動設備無關的隨機擴展,從而產生更多的認證輸出比特。”

          為此,Zhang和Shalm等人設計了一種方法,利用少量“種子隨機性”來產生更多量子認證隨機比特。這是新系統(tǒng)與其他隨機數(shù)生成器的顯著區(qū)別之一。

          Shalm說:“這與用種子晶體培育大型結構的方式很相似。借助新系統(tǒng),我們能夠輸出比輸入多24%的隨機比特。”

          原則上講,新系統(tǒng)能夠以無限擴展輸入種子隨機性的方式運行。由于技術要求非常苛刻,為了實現(xiàn)隨機性擴展,研究人員不得不將實驗系統(tǒng)推向了當前的極限。

          為了將隨機輸入的種子擴展成與設備無關的隨機比特,研究人員必須對種子比特進行巧妙應用。系統(tǒng)通過特殊的“無漏洞貝爾測試”實現(xiàn)了這個目標。

          Shalm說:“與其對所有糾纏光子進行這種會消耗隨機性的測試,我們不如以隨機方式‘抽查’部分光子,以確保系統(tǒng)表現(xiàn)符合預期。這與食品行業(yè)的隨機樣本檢測很類似。值得注意的是,我們必須非常謹慎,以確保抽查過程不存在漏洞。”

          Zhang補充:“以2000個番茄的品質檢測為例,常規(guī)協(xié)議需要消耗2000個有偏隨機比特,而新協(xié)議只消耗1000個均勻隨機比特。在實踐中,均勻隨機比特比有偏隨機比特更易于從NIST隨機信標中獲得。因此,抽查方案更加友好。”

          新成果還可能促進科學家對量子力學隨機性的理解。Shalm說:“從更實際的角度來看,我們的實驗屬于原始量子網絡的實例。其中,糾纏粒子是在嚴格條件下交換和操作的,以完成其他經典(包括局域量子)系統(tǒng)無法完成的任務。新系統(tǒng)可以為各種需要使用隨機樣本資源的應用服務,如挑選陪審員、協(xié)助隨機審計選舉系統(tǒng)甚至助力更公平的國會選區(qū)劃定。有了新系統(tǒng)后,主導選區(qū)劃分的將成為量子力學,而不是政客。現(xiàn)在,我們正在努力讓新系統(tǒng)具備成熟的服務能力。”

          編譯:雷鑫宇 審稿:西莫 責編:陳之涵

          期刊來源:《自然?物理學》

          期刊編號:1745-2473

          原文鏈接:https://phys.org/news/2021-03-device-independent-protocol-efficient-random.html

          中文內容僅供參考,一切內容以英文原版為準。轉載請注明來源。

          、日期處理

          1. 檢查日期是否有效

          該方法用于檢測給出的日期是否有效:

          const isDateValid=(...val)=> !Number.isNaN(new Date(...val).valueOf());
          
          isDateValid("December 17, 1995 03:24:00");  // true
          復制代碼

          2. 計算兩個日期之間的間隔

          該方法用于計算兩個日期之間的間隔時間:

          const dayDif=(date1, date2)=> Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)
              
          dayDif(new Date("2021-11-3"), new Date("2022-2-1"))  // 90
          復制代碼

          距離過年還有90天~

          3. 查找日期位于一年中的第幾天

          該方法用于檢測給出的日期位于今年的第幾天:

          const dayOfYear=(date)=> Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
          
          dayOfYear(new Date());   // 307
          復制代碼

          2021年已經過去300多天了~

          4. 時間格式化

          該方法可以用于將時間轉化為hour:minutes:seconds的格式:

          const timeFromDate=date=> date.toTimeString().slice(0, 8);
              
          timeFromDate(new Date(2021, 11, 2, 12, 30, 0));  // 12:30:00
          timeFromDate(new Date());  // 返回當前時間 09:00:00
          復制代碼

          二、字符串處理

          1. 字符串首字母大寫

          該方法用于將英文字符串的首字母大寫處理:

          const capitalize=str=> str.charAt(0).toUpperCase() + str.slice(1)
          
          capitalize("hello world")  // Hello world
          復制代碼

          2. 翻轉字符串

          該方法用于將一個字符串進行翻轉操作,返回翻轉后的字符串:

          const reverse=str=> str.split('').reverse().join('');
          
          reverse('hello world');   // 'dlrow olleh'
          復制代碼

          3. 隨機字符串

          該方法用于生成一個隨機的字符串:

          const randomString=()=> Math.random().toString(36).slice(2);
          
          randomString();
          復制代碼

          4. 截斷字符串

          該方法可以從指定長度處截斷字符串:

          const truncateString=(string, length)=> string.length < length ? string : `${string.slice(0, length - 3)}...`;
          
          truncateString('Hi, I should be truncated because I am too loooong!', 36)   // 'Hi, I should be truncated because...'
          復制代碼

          5. 去除字符串中的HTML

          該方法用于去除字符串中的HTML元素:

          const stripHtml=html=> (new DOMParser().parseFromString(html, 'text/html')).body.textContent || '';
          復制代碼

          三、數(shù)組處理

          1. 從數(shù)組中移除重復項

          該方法用于移除數(shù)組中的重復項:

          const removeDuplicates=(arr)=> [...new Set(arr)];
          
          console.log(removeDuplicates([1, 2, 2, 3, 3, 4, 4, 5, 5, 6]));
          復制代碼

          2. 判斷數(shù)組是否為空

          該方法用于判斷一個數(shù)組是否為空數(shù)組,它將返回一個布爾值:

          const isNotEmpty=arr=> Array.isArray(arr) && arr.length > 0;
          
          isNotEmpty([1, 2, 3]);  // true
          復制代碼

          3. 合并兩個數(shù)組

          可以使用下面兩個方法來合并兩個數(shù)組:

          const merge=(a, b)=> a.concat(b);
          
          const merge=(a, b)=> [...a, ...b];
          復制代碼

          四、數(shù)字操作

          1. 判斷一個數(shù)是奇數(shù)還是偶數(shù)

          該方法用于判斷一個數(shù)字是奇數(shù)還是偶數(shù):

          const isEven=num=> num % 2===0;
          
          isEven(996); 
          復制代碼

          2. 獲得一組數(shù)的平均值

          const average=(...args)=> args.reduce((a, b)=> a + b) / args.length;
          
          average(1, 2, 3, 4, 5);   // 3
          復制代碼

          3. 獲取兩個整數(shù)之間的隨機整數(shù)

          該方法用于獲取兩個整數(shù)之間的隨機整數(shù)

          const random=(min, max)=> Math.floor(Math.random() * (max - min + 1) + min);
          
          random(1, 50);
          復制代碼

          4. 指定位數(shù)四舍五入

          該方法用于將一個數(shù)字按照指定位進行四舍五入:

          const round=(n, d)=> Number(Math.round(n + "e" + d) + "e-" + d)
          
          round(1.005, 2) //1.01
          round(1.555, 2) //1.56
          復制代碼

          五、顏色操作

          1. 將RGB轉化為十六機制

          該方法可以將一個RGB的顏色值轉化為16進制值:

          const rgbToHex=(r, g, b)=> "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
          
          rgbToHex(255, 255, 255);  // '#ffffff'
          復制代碼

          2. 獲取隨機十六進制顏色

          該方法用于獲取一個隨機的十六進制顏色值:

          const randomHex=()=> `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
          
          randomHex();
          復制代碼

          六、瀏覽器操作

          1. 復制內容到剪切板

          該方法使用 navigator.clipboard.writeText 來實現(xiàn)將文本復制到剪貼板:

          const copyToClipboard=(text)=> navigator.clipboard.writeText(text);
          
          copyToClipboard("Hello World");
          復制代碼

          2. 清除所有cookie

          該方法可以通過使用 document.cookie 來訪問 cookie 并清除存儲在網頁中的所有 cookie:

          const clearCookies=document.cookie.split(';').forEach(cookie=> document.cookie=cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));
          復制代碼

          3. 獲取選中的文本

          該方法通過內置的 getSelection 屬性獲取用戶選擇的文本:

          const getSelectedText=()=> window.getSelection().toString();
          
          getSelectedText();
          復制代碼

          4. 檢測是否是黑暗模式

          該方法用于檢測當前的環(huán)境是否是黑暗模式,它是一個布爾值:

          const isDarkMode=window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
          
          console.log(isDarkMode)
          復制代碼

          5. 滾動到頁面頂部

          該方法用于在頁面中返回頂部:

          const goToTop=()=> window.scrollTo(0, 0);
          
          goToTop();
          復制代碼

          6. 判斷當前標簽頁是否激活

          該方法用于檢測當前標簽頁是否已經激活:

          const isTabInView=()=> !document.hidden; 
          復制代碼

          7. 判斷當前是否是蘋果設備

          該方法用于檢測當前的設備是否是蘋果的設備:

          const isAppleDevice=()=> /Mac|iPod|iPhone|iPad/.test(navigator.platform);
          
          isAppleDevice();
          復制代碼

          8. 是否滾動到頁面底部

          該方法用于判斷頁面是否已經底部:

          const scrolledToBottom=()=> document.documentElement.clientHeight + window.scrollY >=document.documentElement.scrollHeight;
          復制代碼

          9. 重定向到一個URL

          該方法用于重定向到一個新的URL:

          const redirect=url=> location.href=url
          
          redirect("https://www.google.com/")
          復制代碼

          10. 打開瀏覽器打印框

          該方法用于打開瀏覽器的打印框:

          const showPrintDialog=()=> window.print()
          復制代碼

          七、其他操作

          1. 隨機布爾值

          該方法可以返回一個隨機的布爾值,使用Math.random()可以獲得0-1的隨機數(shù),與0.5進行比較,就有一半的概率獲得真值或者假值。

          const randomBoolean=()=> Math.random() >=0.5;
          
          randomBoolean();
          復制代碼

          2. 變量交換

          可以使用以下形式在不適用第三個變量的情況下,交換兩個變量的值:

          [foo, bar]=[bar, foo];
          復制代碼

          3. 獲取變量的類型

          該方法用于獲取一個變量的類型:

          const trueTypeOf=(obj)=> Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
          
          trueTypeOf('');     // string
          trueTypeOf(0);      // number
          trueTypeOf();       // undefined
          trueTypeOf(null);   // null
          trueTypeOf({});     // object
          trueTypeOf([]);     // array
          trueTypeOf(0);      // number
          trueTypeOf(()=> {});  // function
          復制代碼

          4. 華氏度和攝氏度之間的轉化

          該方法用于攝氏度和華氏度之間的轉化:

          const celsiusToFahrenheit=(celsius)=> celsius * 9/5 + 32;
          const fahrenheitToCelsius=(fahrenheit)=> (fahrenheit - 32) * 5/9;
          
          celsiusToFahrenheit(15);    // 59
          celsiusToFahrenheit(0);     // 32
          celsiusToFahrenheit(-20);   // -4
          fahrenheitToCelsius(59);    // 15
          fahrenheitToCelsius(32);    // 0
          復制代碼

          5. 檢測對象是否為空

          該方法用于檢測一個JavaScript對象是否為空:

          const isEmpty=obj=> Reflect.ownKeys(obj).length===0 && obj.constructor===Object;

          主站蜘蛛池模板: 久久99热狠狠色精品一区| 日韩十八禁一区二区久久| 九九无码人妻一区二区三区| 国产一区二区三区不卡观| 一区二区三区电影网| 日韩高清一区二区| 亚洲无圣光一区二区| 无码乱人伦一区二区亚洲一| 国产一区麻豆剧传媒果冻精品 | 亚洲中文字幕丝袜制服一区 | 亚洲视频在线一区二区三区| 亚洲夜夜欢A∨一区二区三区| 国产激情精品一区二区三区| 波多野结衣精品一区二区三区 | 国产亚洲综合一区二区三区 | 精品日韩亚洲AV无码一区二区三区| 在线精品国产一区二区三区| 国产精品亚洲不卡一区二区三区 | 日本精品一区二区三区在线视频 | 国产主播在线一区| 中文字幕av一区| 国产精品夜色一区二区三区| 91午夜精品亚洲一区二区三区| 日韩精品乱码AV一区二区| 无码国产精品一区二区免费vr| 亚洲av不卡一区二区三区| 国产a∨精品一区二区三区不卡 | 亚洲一区中文字幕| 精品一区精品二区制服| 国模私拍福利一区二区| 亚洲日韩精品国产一区二区三区 | 无码一区二区波多野结衣播放搜索| 国产精品高清一区二区人妖| 亚洲中文字幕一区精品自拍 | 冲田杏梨AV一区二区三区| 激情久久av一区av二区av三区| 国产aⅴ精品一区二区三区久久| 无码人妻精品一区二区蜜桃百度 | 无码国产精品一区二区免费I6| 国产乱人伦精品一区二区在线观看| 日本免费一区二区三区最新vr|