
文章插图
数组 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 也可是首字母小写 webkitconst 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 = https://www.isolves.com/it/cxkf/yy/js/2020-05-14/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);}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 电商运营主要工作内容是什么?
- 南昌|年龄偏大的求职者惹谁了?找份合适的工作咋就那么难呢?
- |戏精大胃王想出去找工作发大财,飞哥有规划!小胃王脚心咋是白的
- 广东省|广东:女孩找工作被骗,深夜在路边哭泣,“他已经跟我两三天了”
- |别傻了,没有一份工作是不辛苦的
- 18条MySQL优化技巧
- 辣目洋子|《没有工作的一年》开播,被辣目洋子的角色经历共情了
- 淘宝运营是做什么的工作 淘宝运营都有哪些工作需要做
- 浅谈搜索引擎的工作原理
- 劳动法中常见的误区,你中弹了吗?
