项目中js功能小结

来源:互联网 发布:notepad 和python 编辑:程序博客网 时间:2024/06/06 06:49

直接上代码喽

/** * 使用闭包和展开运算符将参数数组映射到函数的输入。 */const spreadOver = fn => (argsArr = fn(...argsArr));//  例子const arrayMax = spreadOver(Math.max);arrayMax([1, 2, 3]); // -> 3arrayMax([1, 2, 4]); // -> 4/* * 把一个数组分成指定大小的小数组* arr:  拆分的数组参数* size:  小数组个数*/const chunk = (arr, size) =>  Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>    arr.slice(i * size, i * size + size)  );// chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]]/** 数组去重*/const valuesofArray = arr => [...new Set(arr)];// valuesofArray([1,2,2,3,4,4,5]) -> [1,2,3,4,5]/** 返回两个数组中不一样的元素*/const symmetricDifference = (a, b) => {  const sA = new Set(a),    sB = new Set(b);  return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))];};// symmetricDifference([1,2,3], [1,2,4]) -> [3,4]/*  * 获取网站的url  */const currentURL = () => window.location.href;// currentUrl() -> 'https://google.com'/**  返回指定URL参数对象*/const getURLParameters = url =>  url    .match(/([^?=&]+)(=([^&]*))/g)    .reduce(      (a, v) => (        (a[v.slice(0, v.indexOf("="))] = v.slice(v.indexOf("=") + 1)), a      ),      {}    );// getURLParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'}/** 返回顶部 (平滑返回顶部)*/const scrollToTop = () => {  const c = document.documentElement.scrollTop || document.body.scrollTop;  if (c > 0) {    window.requestAnimationFrame(scrollToTop);    window.scrollTo(0, c - c / 8);  }};// scrollToTop()/*  * 将数字四舍五入到指定的数字位数。  */const round = (n, decimals = 0) =>  Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`);// round(1.005, 2) -> 1.01/** 将消息转换成语音* 使用SpeechSynthesisUtterance.voice和window.speechSynthesis.getVoices()将消息转换为语音。使用window.speechSynthesis.speak()播放消息。* API文档请看下面的链接* https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance*/const speechSynthesis = message => {  const msg = new SpeechSynthesisUtterance(message);  msg.voice = window.speechSynthesis.getVoices()[0];  window.speechSynthesis.speak(msg);};// speechSynthesis('你试试看久知道了哦')/*  * 将json写入文件  */const fs = require("fs");const JSONToFile = (obj, filename) =>  fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2));// JSONToFile({test: "is passed"}, 'testJsonFile') -> 将对象卸入到 'testJsonFile.json'文件/** 大写字符串的第一个字母*/const capitalize = ([first, ...rest], lowerRest = false) =>  first.toUpperCase() +  (lowerRest ? rest.join("").toLowerCase() : rest.join(""));// capitalize('myName') -> 'MyName'// capitalize('myName', true) -> 'Myname'/** 将字符串中每个单词的首字母大写。*/const capitalizeEveryWord = str =>  str.replace(/\b[a-z]/g, char => char.toUpperCase());// capitalizeEveryWord('hello world!') -> 'Hello World!'/** 颠倒字符串*/const reverseString = str =>  str    .split("")    .reverse()    .join("");// reverseString('foobar') -> 'raboof'/** 截断一个字符串到指定的长度。*/const truncateString = (str, num) =>  str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + "..." : str;// truncateString('boomerang', 7) -> 'boom...'/** 生成一个uuid* 可在需要添加唯一行地方使用*/const UUIDGenerator = () =>  ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>    (      c ^      (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))    ).toString(16)  );// UUIDGenerator() -> '7982fcfe-5721-4632-bede-6000885be57d'export {  arrayMax,  chunk,  valuesofArray,  symmetricDifference,  currentURL,  symmetricDifference,  getURLParameters,  scrollToTop,  round,  speechSynthesis,  truncateString,  UUIDGenerator};
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大汉光熹 被3个大汉强很爽 大汉科技帝国 大汉二十四皇帝列表 大汉皇帝列表 大汉帝国风云录 6个大汉上一个女 帝国之大汉崛起 三国之大汉皇权 大汉十三将2烽火边城 大汉十三将之烽火佳人 大汉我夺舍汉文帝 三国大汉天子 大江论坛 大江网 大江大河2 大江 大江歌 大江歌罢 大江大河剧 月涌大江流 明月照大江 大江流作品 大江网论坛 大江南北 大江流 大江入海 大江健三郎 江西大江网 大江论坛网 大江网首页 大江生医 大江之星 大江公司 大江中学 大江摩托 大江电动 大江集团 大江建设 大江农业 大江摩托车