LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

值得收藏的45个JavaScript代码,非常实用!

admin
2024年11月3日 7:13 本文热度 387
  1. 生成字符串的字谜 - 使用递归生成给定字符串的所有可能字谜。
const anagrams = str => {
  if (str.length <= 2return str.length === 2 ? [str, str[1] + str[0]] : [str];
  return str.split('').reduce((acc, letter, i) => acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []);
};
  1. 计算数组的平均数 - 使用reduce方法计算数组的平均值。
const average = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length;
  1. 首字母大写每个单词 - 使用正则表达式匹配每个单词并大写。
const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());
  1. 检查字符串是否为回文 - 转换为小写并移除非字母字符,然后检查反转后的字符串是否与原字符串相同。
const palindrome = str => {
  const s = str.toLowerCase().replace(/[\W_]/g'');
  return s === s.split('').reverse().join('');
};
  1. 计算数组中特定值的出现次数 - 使用reduce方法计算特定值的出现次数。
const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 00);
  1. 获取当前URL - 使用window.location.href获取当前页面的URL。
const currentUrl = _ => window.location.href;
  1. Currying函数 - 使用递归实现函数柯里化。
const curry = (fn, arity = fn.length, ...args) =>
  arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);
  1. 深度扁平化数组 - 使用递归和reduce方法实现数组的深度扁平化。
const deepFlatten = arr => arr.reduce((a, v) => a.concat(Array.isArray(v) ? deepFlatten(v) : v), []);
  1. 计算两点之间的距离 - 使用Math.hypot方法计算两点之间的欧几里得距离。
const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0);
  1. 生成斐波那契数列 - 使用reduce方法生成长度为n的斐波那契数列。
const fibonacci = n => Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []);
  1. 过滤数组中的非唯一值 - 过滤出数组中只出现一次的元素。
const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i));
  1. 扁平化数组 - 使用reduceconcat方法扁平化数组。
const flatten = arr => arr.reduce((a, v) => a.concat(v), []);
  1. 获取数组中的最大值/最小值 - 使用Math.max/Math.min和扩展运算符。
const arrayMax = arr => Math.max(...arr);
const arrayMin = arr => Math.min(...arr);
  1. 获取滚动位置 - 获取元素或窗口的滚动位置。
const getScrollPos = (el = window) => ({
  x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft,
  y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop
});
  1. 计算最大公约数 - 使用递归计算两个数的最大公约数。
const gcd = (x, y) => !y ? x : gcd(y, x % y);
  1. 生成UUID - 使用crypto API生成符合RFC4122版本4的UUID。
const uuid = _ => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
  1. 验证数字 - 检查参数是否为有效的数字。
const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;

继续总结剩余的JavaScript代码片段:

  1. 反转字符串 - 使用数组的解构和reverse方法来反转字符串。
const reverseString = str => [...str].reverse().join('');
  1. RGB转十六进制颜色 - 将RGB颜色值转换为十六进制颜色字符串。
const rgbToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6'0');
  1. 滚动到页面顶部 - 平滑滚动到页面顶部。
const scrollToTop = _ => {
  const c = document.documentElement.scrollTop || document.body.scrollTop;
  if (c > 0) {
    window.requestAnimationFrame(scrollToTop);
    window.scrollTo(0, c - c / 8);
  }
};
  1. 随机化数组元素顺序 - 使用sort方法和Math.random随机排序数组元素。
const shuffle = arr => arr.sort(() => Math.random() - 0.5);
  1. 重定向到URL - 重定向到指定的URL地址。
const redirect = (url, asLink = true) =>
  asLink ? window.location.href = url : window.location.replace(url);
  1. 获取数组中随机元素的值 - 根据随机生成的值对数组元素进行排序。
const countShuffle = arr => {
  let r = arr.map(() => Math.random());
  return arr.sort((a, b) => r[a] - r[b]);
};
  1. 过滤数组与给定值的相似性 - 过滤数组,只保留在给定数组values中的元素。
const similarity = (arr, values) => arr.filter(v => values.includes(v));
  1. 按字母顺序排序字符串中的字符 - 对字符串中的字符进行字母顺序排序。
const sortCharactersInString = str =>
  str.split('').sort((a, b) => a.localeCompare(b)).join('');
  1. 计算数组元素总和 - 使用reduce方法计算数组中所有元素的总和。
const sum = arr => arr.reduce((acc, val) => acc + val, 0);
  1. 交换两个变量的值 - 使用数组解构交换两个变量的值。
// 示例中未给出具体的函数实现,但提供了基本的语法
// [varA, varB] = [varB, varA];
  1. 获取数组的尾部元素 - 返回数组除去第一个元素后的部分。
const tail = arr => arr.length > 1 ? arr.slice(1) : arr;
  1. 获取数组中的唯一值 - 使用Set对象去除数组中的重复元素。
const unique = arr => [...new Set(arr)];
  1. 解析URL参数 - 从URL中解析出参数并转换为对象。
const getUrlParameters = url =>
  url.match(/([^?&=]+)(=([^&]*))/g).reduce((a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {});

继续总结剩余的JavaScript代码片段:

  1. 初始化数组范围 - 使用map方法生成一个从startend的数组。
const initializeArrayRange = (end, start = 0) =>
  Array.apply(nullArray(end - start)).map((v, i) => i + start);
  1. 初始化数组为特定值 - 使用fill方法生成一个指定长度且每个元素都是value的数组。
const initializeArray = (n, value = 0) => Array(n).fill(value);
  1. 获取数组的第一个元素 - 返回数组的第一个元素。
const head = arr => arr[0];
  1. 获取数组的剩余元素(除去第一个) - 返回数组除去第一个元素后的所有元素。
const initial = arr => arr.slice(0-1);
  1. 获取数组的最后一个元素 - 返回数组的最后一个元素。
const last = arr => arr.slice(-1)[0];
  1. 测试函数执行时间 - 使用performance.now测量函数执行时间。
const timeTaken = callback => {
  console.time('timeTaken');
  const r = callback();
  console.timeEnd('timeTaken');
  return r;
};
  1. 从键值对创建对象 - 使用reduce方法将键值对数组转换为对象。
const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {});
  1. 函数管道 - 将多个函数组合执行,将一个函数的输出作为下一个函数的输入。
const pipe = (...funcs) => arg => funcs.reduce((acc, func) => func(acc), arg);
  1. 生成幂集 - 使用reducemap生成一个数组所有可能的子集。
const powerset = arr =>
  arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]);
  1. 生成范围内的随机整数 - 生成一个在minmax之间的随机整数。
const randomIntegerInRange = (min, max) =>
  Math.floor(Math.random() * (max - min + 1)) + min;
  1. 生成范围内的随机数 - 生成一个在minmax之间的随机数。
const randomInRange = (min, max) => Math.random() * (max - min) + min;
  1. 判断数字能否被整除 - 使用模运算符判断dividend能否被divisor整除。
const isDivisible = (dividend, divisor) => dividend % divisor === 0;
  1. 转义正则表达式特殊字符 - 使用replace方法转义正则表达式中的特殊字符。
const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g'\\$&');
  1. 判断数字是偶数还是奇数 - 使用模运算符判断数字是偶数还是奇数。
const isEven = num => num % 2 === 0;
  1. 计算数字的阶乘 - 使用递归计算数字的阶乘。
const factorial = n => n <= 1 ? 1 : n * factorial(n - 1);

这些代码片段展示了JavaScript在处理字符串、数组、数学运算以及DOM操作等方面的强大能力,非常适合在实际开发中快速实现功能。


该文章在 2024/11/4 10:42:42 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved