36个工作中常用的JavaScript函数片段分别是哪些
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关36个工作中常用的JavaScript函数片段分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数组 Array数组去重fu
千家信息网最后更新 2026年11月02日36个工作中常用的JavaScript函数片段分别是哪些
这期内容当中小编将会给大家带来有关36个工作中常用的JavaScript函数片段分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
数组 Array
数组去重
function noRepeat(arr) { return [...new Set(arr)]; }查找数组最大
function arrayMax(arr) { return Math.max(...arr); }查找数组最小
function arrayMin(arr) { return Math.min(...arr); }返回已 size 为长度的数组分割的原数组
function chunk(arr, size = 1) { return Array.from( { length: Math.ceil(arr.length / size), }, (v, i) => arr.slice(i * size, i * size + size) ); }检查数组中某元素出现的次数
function countOccurrences(arr, value) { return arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0); }扁平化数组
默认 depth 全部展开
function flatten(arr, depth = -1) { if (depth === -1) { return [].concat( ...arr.map((v) => (Array.isArray(v) ? this.flatten(v) : v)) ); } if (depth === 1) { return arr.reduce((a, v) => a.concat(v), []); } return arr.reduce( (a, v) => a.concat(Array.isArray(v) ? this.flatten(v, depth - 1) : v), [] ); }对比两个数组并且返回其中不同的元素
function diffrence(arrA, arrB) { return arrA.filter((v) => !arrB.includes(v)); }返回两个数组中相同的元素
function intersection(arr1, arr2) { return arr2.filter((v) => arr1.includes(v)); }从右删除 n 个元素
function dropRight(arr, n = 0) { return n < arr.length ? arr.slice(0, arr.length - n) : []; }截取第一个符合条件的元素及其以后的元素
function dropElements(arr, fn) { while (arr.length && !fn(arr[0])) arr = arr.slice(1); return arr; }返回数组中下标间隔 nth 的元素
function everyNth(arr, nth) { return arr.filter((v, i) => i % nth === nth - 1); }返回数组中第 n 个元素
支持负数
function nthElement(arr, n = 0) { return (n >= 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; }返回数组头元素
function head(arr) { return arr[0]; }返回数组末尾元素
function last(arr) { return arr[arr.length - 1]; }数组乱排
function shuffle(arr) { let array = arr; let index = array.length; while (index) { index -= 1; let randomInedx = Math.floor(Math.random() * index); let middleware = array[index]; array[index] = array[randomInedx]; array[randomInedx] = middleware; } return array; }浏览器对象 BOM
判读浏览器是否支持 CSS 属性
/** * 告知浏览器支持的指定css属性情况 * @param {String} key - css属性,是属性的名字,不需要加前缀 * @returns {String} - 支持的属性情况 */ function validateCssKey(key) { const jsKey = toCamelCase(key); // 有些css属性是连字符号形成 if (jsKey in document.documentElement.style) { return key; } let validKey = ""; // 属性名为前缀在js中的形式,属性值是前缀在css中的形式 // 经尝试,Webkit 也可是首字母小写 webkit const prefixMap = { Webkit: "-webkit-", Moz: "-moz-", ms: "-ms-", O: "-o-", }; for (const jsPrefix in prefixMap) { const styleKey = toCamelCase(`${jsPrefix}-${jsKey}`); if (styleKey in document.documentElement.style) { validKey = prefixMap[jsPrefix] + key; break; } } return validKey; } /** * 把有连字符号的字符串转化为驼峰命名法的字符串 */ function toCamelCase(value) { return value.replace(/-(\w)/g, (matched, letter) => { return letter.toUpperCase(); }); } /** * 检查浏览器是否支持某个css属性值(es6版) * @param {String} key - 检查的属性值所属的css属性名 * @param {String} value - 要检查的css属性值(不要带前缀) * @returns {String} - 返回浏览器支持的属性值 */ function valiateCssValue(key, value) { const prefix = ["-o-", "-ms-", "-moz-", "-webkit-", ""]; const prefixValue = prefix.map((item) => { return item + value; }); const element = document.createElement("div"); const eleStyle = element.style; // 应用每个前缀的情况,且最后也要应用上没有前缀的情况,看最后浏览器起效的何种情况 // 这就是最好在prefix里的最后一个元素是'' prefixValue.forEach((item) => { eleStyle[key] = item; }); return eleStyle[key]; } /** * 检查浏览器是否支持某个css属性值 * @param {String} key - 检查的属性值所属的css属性名 * @param {String} value - 要检查的css属性值(不要带前缀) * @returns {String} - 返回浏览器支持的属性值 */ function valiateCssValue(key, value) { var prefix = ["-o-", "-ms-", "-moz-", "-webkit-", ""]; var prefixValue = []; for (var i = 0; i < prefix.length; i++) { prefixValue.push(prefix[i] + value); } var element = document.createElement("div"); var eleStyle = element.style; for (var j = 0; j < prefixValue.length; j++) { eleStyle[key] = prefixValue[j]; } return eleStyle[key]; } function validCss(key, value) { const validCss = validateCssKey(key); if (validCss) { return validCss; } return valiateCssValue(key, value); }摘自 https://juejin.im/post/5e58f398f265da574a1eb569
返回当前网页地址
function currentURL() { return _window.location.href; }获取滚动条位置
function getScrollPosition(el = window) { return { x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop, }; }获取 url 中的参数
function getURLParameters(url) { return url .match(/([^?=&]+)(=([^&]*))/g) .reduce( (a, v) => ( (a[v.slice(0, v.indexOf("="))] = v.slice(v.indexOf("=") + 1)), a ), {} ); }页面跳转,是否记录在 history 中
function redirect(url, asLink = true) { asLink ? _(window.location.href = url) : _window.location.replace(url); }滚动条回到顶部动画
function scrollToTop() { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; if (scrollTop > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c / 8); } else { window.cancelAnimationFrame(scrollToTop); } }复制文本
function copy(str) { const el = document.createElement("textarea"); el.value = str; el.setAttribute("readonly", ""); el.style.position = "absolute"; el.style.left = "-9999px"; el.style.top = "-9999px"; document.body.appendChild(el); const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false; el.select(); document.execCommand("copy"); document.body.removeChild(el); if (selected) { document.getSelection().removeAllRanges(); document.getSelection().addRange(selected); } }检测设备类型
function detectDeviceType() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ) ? "Mobile" : "Desktop"; }Cookie
增
function setCookie(key, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); [xss_clean] = key + "=" + escape(value) + (expiredays == null ? "" : ";expires=" + exdate.toGMTString()); }删
function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if (cval != null) { [xss_clean] = name + "=" + cval + ";expires=" + exp.toGMTString(); } }查
function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if ((arr = [xss_clean].match(reg))) { return arr[2]; } else { return null; } }日期 Date
时间戳转换为时间
默认为当前时间转换结果
isMs 为时间戳是否为毫秒
function timestampToTime(timestamp = Date.parse(new Date()), isMs = true) { const date = new Date(timestamp * (isMs ? 1 : 1000)); return `${date.getFullYear()}-${ date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1 }-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; }文档对象 DOM
固定滚动条
/** * 功能描述:一些业务场景,如弹框出现时,需要禁止页面滚动,这是兼容安卓和 iOS 禁止页面滚动的解决方案 */ let scrollTop = 0; function preventScroll() { // 存储当前滚动位置 scrollTop = window.scrollY; // 将可滚动区域固定定位,可滚动区域高度为 0 后就不能滚动了 document.body.style["overflow-y"] = "hidden"; document.body.style.position = "fixed"; document.body.style.width = "100%"; document.body.style.top = -scrollTop + "px"; // document.body.style['overscroll-behavior'] = 'none' } function recoverScroll() { document.body.style["overflow-y"] = "auto"; document.body.style.position = "static"; // document.querySelector('body').style['overscroll-behavior'] = 'none' window.scrollTo(0, scrollTop); }判断当前位置是否为页面底部
返回值为 true/false
function bottomVisible() { return ( document.documentElement.clientHeight + window.scrollY >= (document.documentElement.scrollHeight || document.documentElement.clientHeight) ); }判断元素是否在可视范围内
partiallyVisible 为是否为完全可见
function elementIsVisibleInViewport(el, partiallyVisible = false) { const { top, left, bottom, right } = el.getBoundingClientRect(); return partiallyVisible ? ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) && ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth)) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth; }获取元素 css 样式
function getStyle(el, ruleName) { return getComputedStyle(el, null).getPropertyValue(ruleName); }进入全屏
function launchFullscreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.msRequestFullscreen) { element.msRequestFullscreen(); } else if (element.webkitRequestFullscreen) { element.webkitRequestFullScreen(); } } launchFullscreen(document.documentElement); launchFullscreen(document.getElementById("id")); //某个元素进入全屏退出全屏
function exitFullscreen() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } } exitFullscreen();全屏事件
document.addEventListener("fullscreenchange", function (e) { if (document.fullscreenElement) { console.log("进入全屏"); } else { console.log("退出全屏"); } });数字 Number
数字千分位分割
function commafy(num) { return num.toString().indexOf(".") !== -1 ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); }生成随机数
function randomNum(min, max) { switch (arguments.length) { case 1: return parseInt(Math.random() * min + 1, 10); case 2: return parseInt(Math.random() * (max - min + 1) + min, 10); default: return 0; } }上述就是小编为大家分享的36个工作中常用的JavaScript函数片段分别是哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
属性
数组
元素
浏览器
支持
浏览
前缀
检查
情况
页面
位置
函数
常用
片段
工作
两个
内容
区域
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网金融监管科技数据
科技创新与互联网经济
互联网巨头反垄断金融科技
广州互联网科技公司
壕鑫互联网络科技
赫美联合互联网科技
润盈互联网科技
互联网系的金融科技公司
重庆互联网医院沙龙医盟信息科技
速维有品互联网信息科技(苏州)有限公司
领航科技大厦互联网公司
神州科技互联网有限公司
信承诺互联网科技有限公司
互联网对科技影响
10位科技互联网大佬
东风日产互联网科技公司叫什么
互联网高科技绘画
科技互联网企业在行动
伍佰万互联网科技是干嘛的
上海挚品互联网科技
银优互联网科技有限公司
智慧科技互联网
科技类的互联网平台
成都铂石互联网科技做什么的
黑科技闪耀互联网之光
互联网媒体平台算高科技产业
东莞新华互联网科技学校
翼展科技 首家互联网医院
互联网科技融合创新