那些令人惊叹的JS一行代码

作者: 浅忆_0810 | 来源:发表于2021-11-20 12:31 被阅读0次

    1. 获取浏览器 Cookie 的值

    使用 document.cookie 来获取 Cookie 的值

    const cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();
    
    cookie('_ga');
    // Result: "GA1.2.1929736587.1601974046"
    

    2. 清除所有 Cookie

    使用 document.cookie 可以清除存储在网页中的所有 cookie

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

    3. 将 RGB 转换为十六进制

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

    4. 复制到剪贴板

    使用 navigator.clipboard.writeText 轻松将任何文本复制到剪贴板上

    const copyToClipboard = text => navigator.clipboard.writeText(text);
    
    copyToClipboard("Hello World");
    

    如果navigator.clipboard属性返回undefined,就说明当前浏览器不支持这个 API。

    由于用户可能把敏感数据(比如密码)放在剪贴板,允许脚本任意读取会产生安全风险,所以这个 API 的安全限制比较多。

    首先,Chrome 浏览器规定,只有 HTTPS 协议的页面才能使用这个 API。不过,开发环境(localhost)也可以使用

    // 兼容
    const input = document.createElement('input')
    input.value = '复制内容'
    input.style.opacity = 0
    document.body.appendChild(input)
    input.select()
    // 执行复制命令并移除文本框
    document.execCommand('copy')
    document.body.removeChild(input)
    

    5. 检查日期是否有效

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

    6. 将字符串首字母大写

    const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
    
    capitalize("follow for more")
    // Result: Follow for more
    

    7. 计算两个日期之间相差的天数

    const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000)
    
    dayDif(new Date("2020-10-21"), new Date("2021-10-22"))
    // Result: 366
    

    8. 生成随机十六进制

    使用 Math.randompadEnd 属性生成随机的十六进制

    const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
    
    console.log(randomHex());
    // Result: #92b008
    

    9. 从 URL获取查询参数

    通过 window.location 或原始 URL 轻松查询 goole.com?search=easy&page=3 的参数

    const getParameters = (URL) => {
        URL = JSON.parse('{"' + decodeURI(URL.split("?")[1]).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') +'"}');
    
        return JSON.stringify(URL);
    };
    
    getParameters(window.location)
    // Result: { search : "easy", page : 3 }
    
    // 更简单的方式
    Object.fromEntries(new URLSearchParams(window.location.search))
    

    10. 从日期获取“时分秒”格式的时间

    从日期中,获取到 hour : minutes : seconds 格式的时间

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

    11. 求平均值

    使用 reduce 方法找到多个数字的平均值

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

    12. 回到顶部

    使用 window.scrollTo(0, 0) 方法自动回到顶部。将 xy 都设置为 0

    const goToTop = () => window.scrollTo(0, 0);
    
    goToTop();
    

    13. 检查数组是否为空

    检查数组是否为空的简单代码,结果将返回 truefalse

    const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;
    
    isNotEmpty([1, 2, 3]);
    // Result: true
    

    14. 获取用户选定的文本

    使用内置 getSelection 属性获取用户选择的文本

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

    15. 打乱数组

    使用 sortrandom 方法对数组进行打乱混合

    const shuffleArray = arr => arr.sort(() => 0.5 - Math.random());
    
    console.log(shuffleArray([1, 2, 3, 4]));
    // Result: [ 1, 4, 3, 2 ]
    

    16. 检测用户是否处于暗模式

    const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
    
    console.log(isDarkMode) // Result: True or False
    

    17. 判断页面是否被嵌入iframe里面

    window.self === window.top
    // false –> 说明页面被嵌套在iframe中了
    

    如果报跨域问题,也可使用

    window.location.ancestorOrigins.length // 如果有值,说明被嵌套进iframe中
    

    18. 将一个数转换为千分位格式

    Number(1234).toLocaleString() // 1,234
    Number(-1234).toLocaleString() // -1,234
    

    相关文章

      网友评论

        本文标题:那些令人惊叹的JS一行代码

        本文链接:https://www.haomeiwen.com/subject/xswytrtx.html