国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

直接拿來用!盤點一些拯救頭發的 JS 單行代碼,網友:摸魚必備啊

開發 前端
JavaScript是 Web的編程語言。所有現代的 HTML頁面都使用 JavaScript。 JavaScript非常容易學。本篇就盤點一些拯救頭發的 JS 單行代碼。

[[429520]]

廢話不多說,直接上。

DOM

檢查一個元素是否被聚焦

  1. const hasFocus = (ele) => ele === document.activeElement 

獲取一個元素的所有兄弟元素

  1. const siblings = (ele) =>  
  2.   .slice.call(ele.parentNode.children).filter((child) => child !== ele); 

獲取選中文本

  1. const getSelectedText = () => window.getSelection().toString(); 

回到上一頁

  1. history.back(); 
  2. // Or 
  3. history.go(-1); 

清除所有 cookies

  1. const cookies = document.cookie.split(';').map((item) =>  
  2. item.split('=')).reduce((acc, [k, v]) => (acc[k.trim().replace('"''')] = v) && acc, {}); 

將 cookie 轉換為對象

  1. const cookies = document.cookie.split(';').map((item) => item.split('=')).reduce((acc, [k, v]) => (acc[k.trim().replace('"''')] = v) && acc, {}); 

數組

比較兩個數組

  1. // `a` 和 `b` 都是數組 
  2. const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b); 
  3.  
  4. // 或者 
  5. const isEqual = (a, b) => a.length === b.length &&  
  6.   a.every((v, i) => v === b[i]); 
  7.  
  8. // 事例 
  9. isEqual([1, 2, 3], [1, 2, 3]); // true 
  10. isEqual([1, 2, 3], [1, '2', 3]); // false 

將對象數組轉換為單個對象

  1. const toObject = (arr, key) => arr.reduce((a, b) => ({ ...a, [b[key]]: b }), {}); 
  2. // Or 
  3. const toObject = (arr, key) => Object.fromEntries(arr.map((it) => [it[key], it])); 
  4.  
  5. // 事例 
  6. toObject([ 
  7. { id: '1'name'Alpha', gender: 'Male' }, 
  8. { id: '2'name'Bravo', gender: 'Male' }, 
  9. { id: '3'name'Charlie', gender: 'Female' }], 
  10. 'id'); 
  11. /* 
  12. '1': { id: '1'name'Alpha', gender: 'Male' }, 
  13. '2': { id: '2'name'Bravo', gender: 'Male' }, 
  14. '3': { id: '3'name'Charlie', gender: 'Female' } 
  15. */ 

根據對象數組的屬性進行計數

  1. const countBy = (arr, prop) => arr.reduce((prev, curr) => ((prev[curr[prop]] = ++prev[curr[prop]] || 1), prev), {}); 
  2.  
  3. // 事例 
  4. countBy([ 
  5. { branch: 'audi', model: 'q8'year'2019' }, 
  6. { branch: 'audi', model: 'rs7'year'2020' }, 
  7. { branch: 'ford', model: 'mustang'year'2019' }, 
  8. { branch: 'ford', model: 'explorer'year'2020' }, 
  9. { branch: 'bmw', model: 'x7'year'2020' }, 
  10. ], 
  11. 'branch'); 
  12.  
  13. // { 'audi': 2, 'ford': 2, 'bmw': 1 } 

檢查數組是否為空

  1. const isNotEmpty = (arr) => Array.isArray(arr) && Object.keys(arr).length > 0; 
  2.  
  3. // 事例 
  4. isNotEmpty([]); // false 
  5. isNotEmpty([1, 2, 3]); // true 

對象

檢查多個對象是否相等

  1. const isEqual = (...objects) => objects.every((obj) => 
  2.   JSON.stringify(obj) === JSON.stringify(objects[0])); 
  3. // 事例 
  4.  
  5. console.log(isEqual({ foo: 'bar' }, { foo: 'bar' })); // true 
  6. console.log(isEqual({ foo: 'bar' }, { bar: 'foo' })); // false 

從對象數組中提取指定屬性的值

  1. const pluck = (objs, property) => objs.map((obj) => obj[property]); 
  2. // Example 
  3. const aa = pluck([ 
  4. name'小智', age: 20 }, 
  5. name'大志', age: 25 }, 
  6. name'王大志', age: 30 }, 
  7. ], 
  8. 'name'); 
  9. // [ '小智''大志''王大志' ] 

反轉對象的鍵和值

  1. const invert = (obj) => Object.keys(obj).reduce((res, k) => Object.assign(res, { [obj[k]]: k }), {}); 
  2. // 或 
  3. const invert = (obj) => Object.fromEntries(Object.entries(obj).map(([k, v]) => [v, k])); 
  4. // 事例 
  5. invert({ a: '1', b: '2', c: '3' }); // { 1: 'a', 2: 'b', 3: 'c' } 

從對象中刪除所有 null 和 undefined 的屬性

  1. const removeNullUndefined = (obj) =>  
  2.   Object.entries(obj) 
  3.    .reduce((a, [k, v]) => (v == null ? a : ((a[k] = v), a)), {}); 
  4.  
  5. // 或 
  6.  
  7. const removeNullUndefined = (obj) => 
  8.   Object.entries(obj) 
  9.   .filter(([_, v]) => v != null
  10.   .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}); 
  11.  
  12. // 或 
  13.  
  14. const removeNullUndefined = (obj) =>  
  15.     Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null)); 
  16.  
  17. // 例子 
  18. removeNullUndefined({ 
  19.   foo: null
  20.   bar: undefined, 
  21.   fuzz: 42} 
  22. );  
  23. // { fuzz: 42 } 

根據對象的屬性對其進行排序

  1. Object.keys(obj) 
  2.   .sort() 
  3.   .reduce((p, c) => ((p[c] = obj[c]), p), {}); 
  4.  
  5. // 事例 
  6. const colors = { 
  7.   white: '#ffffff'
  8.   black: '#000000'
  9.   red: '#ff0000'
  10.   green: '#008000'
  11.   blue: '#0000ff'
  12. }; 
  13.  
  14. sort(colors); 
  15.  
  16. /* 
  17.   black: '#000000'
  18.   blue: '#0000ff'
  19.   green: '#008000'
  20.   red: '#ff0000'
  21.   white: '#ffffff'
  22. */ 

檢查一個對象是否是Promise

  1. const isPromise = (obj) => 
  2. !!obj && (typeof obj === 'object' || typeof obj === 'function') &&  
  3. typeof obj.then === 'function'

檢查一個對象是否是一個數組

  1. const isArray = (obj) => Array.isArray(obj); 

字符串

檢查路徑是否是相對路徑

  1. const isRelative = (path) => !/^([a-z]+:)?[\\/]/i.test(path); 
  2.  
  3. // 例子 
  4. isRelative('/foo/bar/baz'); // false 
  5. isRelative('C:\\foo\\bar\\baz'); // false 
  6. isRelative('foo/bar/baz.txt'); // true 
  7. isRelative('foo.md'); // true 

將字符串的第一個字符改為小寫

  1. const lowercaseFirst = (str) => `${str.charAt(0).toLowerCase()}${str.slice(1)}`; 
  2.  
  3. // 例子 
  4. lowercaseFirst('Hello World'); // 'hello World' 

重復一個字符串

  1. const repeat = (str, numberOfTimes) => str.repeat(numberOfTimes); 
  2.  
  3. // 例子 
  4. repeat('ab', 3) 
  5. // ababab 

Dates

給一個小時添加“am/pm”后綴

  1. // `h` is an hour number between 0 and 23 
  2. const suffixAmPm = (h) => `${h % 12 === 0 ? 12 : h % 12}${h < 12 ? 'am' : 'pm'}`; 
  3.  
  4. // 例子 
  5. suffixAmPm(0); // '12am' 
  6. suffixAmPm(5); // '5am' 
  7. suffixAmPm(12); // '12pm' 
  8. suffixAmPm(15); // '3pm' 
  9. suffixAmPm(23); // '11pm' 

計算兩個日期之間的不同天數

  1. const diffDays = (date, otherDate) => Math.ceil(Math.abs(date - otherDate) / (1000 * 60 * 60 * 24)); 
  2.  
  3. // 例子 
  4. diffDays(new Date('2014-12-19'), new Date('2020-01-01')); // 1839 

檢查日期是否有效

  1. const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf()); 
  2.  
  3. isDateValid("December 17, 1995 03:24:00"); // true 

其它

檢查代碼是否在Node.js中運行

  1. const isNode = typeof process !== 'undefined' && process.versions != null &&  
  2.   process.versions.node != null

檢查代碼是否在瀏覽器中運行

  1. const isBrowser = typeof window === 'object' && typeof document === 'object'

將URL參數轉換為對象

  1. const getUrlParams = (query) =>Array.from(new   URLSearchParams(query)).reduce((p, [k, v]) => Object.assign({}, p, { [k]: p[k]   ? (Array.isArray(p[k]) ? p[k] : [p[k]]).concat(v) : v }),{}); 
  2.  
  3. // 例子 
  4. getUrlParams(location.search); // Get the parameters of the current URL 
  5. getUrlParams('foo=Foo&bar=Bar'); // { foo: "Foo", bar: "Bar" } 
  6.  
  7. // Duplicate key 
  8. getUrlParams('foo=Foo&foo=Fuzz&bar=Bar'); // { foo: ["Foo""Fuzz"], bar: "Bar" } 

黑暗檢測模式

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

拷貝到剪切板

  1. const copyToClipboard = (text) =>  
  2.   navigator.clipboard.writeText(text); 
  3.  
  4. // 例子 
  5. copyToClipboard("Hello World"); 

將RGB轉換為十六進制

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

生成一個隨機的十六進制顏色

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

生成隨機IP地址

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

使用 Node crypto 模塊生成隨機字符串

  1. const randomStr = () => require('crypto').randomBytes(32).toString('hex'); 

~~完,我是刷碗智,準備去打個點滴,我們下期見!

作者:Ahmad 譯者:前端小智 來源:ishadee

原文:https://javascript.plainenglish.io/17-life-saving-javascript-one-liners-part1-b0b0b32c9f61 https://javascript.plainenglish.io/another-17-life-saving-javascript-one-liners-8c335bf73d2c

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2013-05-30 10:31:03

Android開發移動開發Android開源項目

2013-10-23 13:23:25

Android UI工具

2021-10-31 07:36:17

前端JavaScript編程

2021-02-22 09:27:34

GitHub開源管理面板

2023-03-09 17:54:04

2022-02-17 13:58:38

Linux技巧文件

2024-03-11 15:08:26

Linux操作系統進程

2020-05-19 08:06:57

代碼重構代碼開發

2013-12-24 14:50:39

Ember.js框架

2009-11-26 10:32:57

PHP代碼優化

2020-09-21 06:58:56

TS 代碼建議

2021-04-16 08:11:24

js前端JavaScript

2010-03-25 13:59:52

Python API

2012-12-24 14:51:02

iOS

2011-11-30 12:40:42

2019-08-01 12:56:00

Python代碼記錄

2019-11-22 10:10:46

IT工具技術

2010-03-16 09:15:20

2013-03-29 09:03:59

iOS實用小代碼iOS開發

2022-06-08 08:03:51

React.jsReactJS 庫
點贊
收藏

51CTO技術棧公眾號

在线视频综合导航| 成年人视频网站免费观看| 国产一区二区观看| 国产高清视频一区三区| 精品国产一区二区三区| 91在线精品观看| 男人的天堂亚洲在线| 亚洲免费在线精品一区| 高潮精品一区videoshd| 天天色综合4| 久久久精品人体av艺术| 黄色录像1级片| 欧美男人的天堂一二区| 丁香六月综合| 国自产精品手机在线观看视频| 欧美三级美国一级| 日韩精品资源| 欧美国产乱子伦| av影片免费在线观看| 日韩经典中文字幕在线观看| 精品视频一区二区三区在线观看| 国产精品久久久久久五月尺| 久久一区激情| 在线观看国产一级片| 欧美日韩综合在线免费观看| www.26天天久久天堂| 日本成人三级电影| 伊人色**天天综合婷婷| 日本成人三级电影网站| av不卡免费在线观看| 视频免费在线看| 91精品国产手机| 精品中文字幕一区二区三区四区| 热99在线视频| 国产最新精品精品你懂的| 妞干网2018| 亚洲精品一区二区三区四区高清| 成人影院中文字幕| 日韩三级在线播放| 亚洲精品国久久99热| 自拍偷拍欧美视频| 国产日韩欧美91| 99精品视频在线免费观看| 国产三级视频在线看| 欧美国产日韩一区二区三区| 妖精视频成人观看www| 日本久久久久久久久久久久| 欧美精品 国产精品| 日韩啪啪网站| 精品成在人线av无码免费看| 色老头久久综合| 国产精品成人自拍| 亚洲精品一品区二品区三品区| 亚洲综合网站在线观看| 综合久久2023| 精品无码久久久久久久动漫| 国产美女在线观看| 国产精品久久久久久久久免费 | 久久精品中文字幕免费mv| 欧美视频导航| 国产精品视频黄色| 亚洲精品自产拍| 美女爽到呻吟久久久久| 女人高潮特级毛片| 久久精品国产亚洲一区二区| 老牛影视一区二区三区| 色视频在线观看福利| 亚州欧美日韩中文视频| 风间由美一区二区三区在线观看| 思思99re6国产在线播放| 国产精品久久久91| 国产精品污www在线观看| gogo亚洲高清大胆美女人体| 久久久久资源| 色综合久久六月婷婷中文字幕| 西野翔中文久久精品字幕| 欧美一级片免费播放| 精品毛片乱码1区2区3区| 欧美电影《睫毛膏》| 电影天堂爱爱爱爱| 久久免费国产视频| 久久精品人人做人人爽人人| 欧美性理论片在线观看片免费| 日本一区二区三区免费看| 欧美性一级生活| 婷婷综合激情| 在线免费看黄色| 国产啪精品视频网站| 一区二区在线免费观看| 亚洲免费观看高清完整版在线观| 性欧美videossex精品| 久久久久久久97| 日本一区二区三区高清不卡| 国产欧美日韩电影| jizzjizzxxxx| 久久天天躁狠狠躁夜夜躁2014 | 热久久精品免费视频| 日本xxxxxxx免费视频| 日韩精品av一区二区三区| 午夜久久久久久久久| av网站无病毒在线| 久久久久久久成人| 日韩国产精品大片| 草裙成人精品一区二区三区| 色天使久久综合网天天| 欧美freesex| 91精品国产综合久久久蜜臀粉嫩 | av成人在线观看| 久热久精久品这里在线观看| 欧美亚洲一二三区| 91成人在线观看喷潮教学| 欧美中日韩免费视频| 国产精品一区二区久久| 国产精品视频免费一区二区三区| 精品蜜桃一区二区三区| 亚洲综合成人婷婷小说| 欧美极品美女视频网站在线观看免费| 91精品中文字幕一区二区三区| 日本欧美久久久久免费播放网| 国产毛片在线看| 日韩国产美国| 欧美激情伊人电影| 欧美成人午夜激情视频| 精品日韩av一区二区| 在线观看一区日韩| 亚洲人成亚洲人成在线观看图片| 国产精品一区专区| 97精品国产福利一区二区三区| av网站在线免费观看| 热久久最新地址| 欧美特级aaa| 久草一区二区| 在线观看视频一区| 久久综合亚州| 麻豆tv入口在线看| 国产精品爽爽爽| 亚洲欧美日韩精品久久| 亚洲人成亚洲人成在线观看| 欧美另类第一页| 91老司机在线| 国产二区视频在线| 五月天精品一区二区三区| 亚洲青青青在线视频| 欧美一区二区成人6969| 91精品国产高清久久久久久久久| 96国产粉嫩美女| 4438全国亚洲精品在线观看视频| 国产精品久久久久久久久久三级| 欧美一级爽aaaaa大片| 成人免费在线小视频| 岛国av在线播放| 91精品综合久久久久久久久久久 | 成年网站在线免费观看| 99热都是精品| 91色国产在线| 在线宅男视频| 韩日毛片在线观看| 韩国精品福利一区二区三区| 日本一区二区乱| 久久99影视| 免费欧美在线| 韩国在线视频一区| 国产精品家庭影院| 亚洲一区中文日韩| av不卡免费在线观看| 欧美亚洲综合另类| 国产精品久久久久久网站| 欧美一二三四五区| 在线免费观看av的网站| 依人在线免费视频| 777久久久精品一区二区三区| 欧美在线视频二区| 欧美与动交zoz0z| 一区二区三区欧美在线| 久久久久久九九九九| 国产一区二区高清视频| 精品日韩在线播放| 在线电影看在线一区二区三区| 欧美凹凸一区二区三区视频| 成人h片在线播放免费网站| 久久久99免费视频| 欧洲永久精品大片ww免费漫画| 久久精品欧美视频| 国产aⅴ夜夜欢一区二区三区 | 91制片厂免费观看| xxxx视频在线| 国产成人欧美日韩在线电影| 亚洲日韩欧美视频| 91精品国产色综合久久不卡电影| 欧美一级片在线观看| 精品亚洲欧美日韩| 国产精品av一区二区三区 | 中文综合在线观看| 亚洲熟妇无码一区二区三区导航| 无遮挡动作视频在线观看免费入口| 高清不卡av| 国产精品免费免费| 亚洲自拍偷拍福利| xxxx影院| 日韩视频在线观看|