本项目来自Github用户Chalarangelo(项目完整地址在文末,原文为英文)。目前,它在Github上获得了超过3000颗星,精心收集了多达48个有用的JavaScript代码片段。用户的代码程序员可以在30秒以内理解这些常用的基本算法,让我们看看这些JavaScript代码传达了什么!使用递归的字符串(有重复项)的字谜。对于给定字符串中的每个字母,为该字母创建一个字谜。使用map()将字母与字谜的每个部分组合起来,然后使用reduce()将所有字谜组合成一个数组,最基本的情况是长度等于2或1的字符串。数组平均使用reduce()将每个值添加到一个累加器,最初为0,然后将总和除以数组长度。将每个单词的第一个字母大写使用replace()匹配每个单词的第一个字符,并使用toUpperCase()将其大写。使用slice(0,1)和toUpperCase()将第一个字母大写,将第一个字母大写,使用slice(1)获取字符串的其余部分。省略lowerRest参数以保留字符串的其余部分不变,或将其设置为true以转换为小写。(注意:这与前面的示例不同)检查回文将字符串转换为LowerCase()并使用replace()从中删除非字母字符。然后,转为lowerCase(),split('')为单个字符,reverse(),join(''),与原未反转的字符串进行比较,转为lowerCase()。计算数组中某个值的出现次数每次遇到数组中的特定值时,使用reduce()递增计数器。当前URL使用window.location.href获取当前URL。Curry使用递归。如果提供的参数(args)数量足够,则调用传递的函数f,否则返回柯里化函数f。Deepflattenarray使用递归,使用reduce()获取所有不是数组的元素,将每个元素展平为数组。数组之间的区别使用filter()去掉部分value,使用includes()判断。两点之间的距离使用Math.hypot()计算两点之间的欧氏距离。模运算符(%)可用于检查除以数字时余数是否等于0。转义正则表达式使用replace()来转义特殊字符。偶数或奇数使用Math.abs()将逻辑扩展到负数,使用模(%)运算符进行检查。如果数字是偶数,则返回true,如果数字是奇数,则返回false。阶乘使用递归。如果n小于或等于1,则返回1。否则返回n和n-1的阶乘的乘积。Fibonacci数组生成器创建一个特定长度的空数组,初始化前两个值(0和1).使用Array.reduce()给数组加值,下一个数等于前两个数的和(前两个除外)。过滤数组中的非唯一值对仅包含唯一值的数组使用Array.filter()。展平数组使用reduce()获取数组中的所有元素,并使用concat()展平它们。从数组中获取最大值使用Math.max()结合扩展运算符(...)获取数组中的最大值。从数组中获取最小值使用Math.min()结合扩展运算符(...)获取数组中的最小值。如果定义了获取滚动位置,使用pageXOffset和pageYOffset,否则使用scrollLeft和scrollTop,可以省略el使用window的默认值。最大公约数(GCD)使用递归。基本情况是当y等于0时。在这种情况下,返回x。否则,返回y的GCD和x/y的余数。HeadoflistreturnsARR[0]listinitializereturnsarr.slice(0,-1)initializearraywithrange使用Array(end-start)创建所需长度的数组,使用map()在范围内填充所需的值,start可以省略,使用默认值0.初始化一个数组,用一个值Array(n)创建一个想要长度的数组,fill(v)用想要的值填充,value可以忽略使用默认值0。在列表的末尾返回arr.slice(-1)[0]测试函数所花费的时间使用performance.now()获取函数的开始和结束时间,控制台.log()花费的时间。第一个参数是函数名,后面的参数传递给函数。来自键值对的对象使用Array.reduce()来创建和组合键值对。管道使用Array.reduce()通过函数传递值。Powerset结合使用reduce()和map()来遍历元素并将它们组合成一个包含所有组合的数组。范围内的随机整数使用Math.random()生成一个随机数并将其映射到所需的范围,使用Math.floor()使其成为一个整数。范围内的随机数使用Math.random()生成随机值,使用乘法将其映射到所需范围。随机化数组的顺序使用sort()对元素重新排序,使用Math.random()随机化顺序。重定向到URL使用window.location.href或window.location.replace()重定向到url。传递第二个参数以模拟链接点击(true-默认)或HTTP重定向(false)。反转字符串使用数组解构和Array.reverse()反转字符串中字符的顺序。使用join('')合并字符以获得字符串。RGB转十六进制使用按位左移运算符(<<)和toString(16),然后padStart(6,"0")将给定的RGB参数转换为十六进制字符串以获得6位十六进制值。滚动到顶部使用document.documentElement.scrollTop或document.body.scrollTop获取到顶部的距离。从顶部滚动一小段距离。使用window.requestAnimationFrame()滚动。随机数组值使用Array.map()和Math.random()创建随机值数组。使用Array.sort()根据随机值对原始数组的元素进行排序。数组之间的相似度使用filter()去除不属于values的值,使用includes()判断。按字符串排序(按字母顺序)使用split('')拆分字符串,sort()使用localeCompare(),使用join('')重新组合。数组sum使用reduce()将每个值加到累加器中,初始化值为0。交换两个变量的值使用数组解构来交换两个变量之间的值。列表的尾部使用ES6Set和...rest运算符返回arr.slice(1)数组的唯一值,以删除所有重复值。URL参数使用带有适当正则表达式的match()来获取所有键值对,并适当地使用map()。使用Object.assign()和spreadoperator(...)将所有键值对组合成一个对象,将location.search作为参数传递给当前url。UUID生成器使用加密API生成符合RFC4122版本4的UUID。验证数字使用!isNaN和parseFloat()检查参数是否为数字,而isFinite()检查数字是否有限。翻译有很多不准确的地方。有兴趣的程序员可以在Github(https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates)上查看英文原版。
