36个工作中常用的JavaScript函数片段分别是哪些
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这期内容当中小编将会给大家带来有关36个工作中常用的JavaScript函数片段分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数组 Array数组去重fu
千家信息网最后更新 2025年02月24日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安全错误
数据库的锁怎样保障安全
本科学历网络安全专业
对峙二中国服务器是哪个地方
我的世界服务器地狱门猪人
查找手机连接不上服务器
为什么要开展网络安全检查
tg数据库学习
数据库商品库存信息管理er图
什么是计算机网络技术的课程
数据库概念结构ER图
海南crm软件开发公司
外部数据库文件是什么意思
设备中毒会影响网络安全吗
深圳csg网络安全论坛
计算机网络技术专业对高数的要求
巢湖瀚海网络技术有限公司
兰州网络安全
互联网科技感色彩设计
微小企业可以申请网络技术公司吗
广元网络技术联系方式
数据库中 逻辑独立性
检测数据库的重要性
关于网络安全有什么体会
济源招聘软件开发
中航信 数据库工程师
不选软件开发
数据库如何引用其他表创建新表
整体上传文件到服务器
通过数据库配置字段校验规则
立信网络安全
软件开发客户跟进流程与技巧