🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

0 篇文章

Array - dropWhile

2019-04-21 描述从左依次移除数组中的元素直到函数返回 true。最终返回数组中剩下的元素。提示对数组进行迭代使用 Array.prototype.slice()移除数组中的第一个元素当函数返回 true 时停止移除返回剩余的元素代码 constdropWhile=(arr,func)=>{while(arr.length>0&&!func(arr[0]))arr=arr.slice(1);return

Array - dropRightWhile

2019-04-20 描述从数组末尾依次移除元素,直到函数返回 true。最终返回数组中剩下的元素。提示通过 while 倒叙遍历数组使用 Array.prototype.slice()删除数组中的最后一个元素直到来自函数的返回值为 true 返回剩余的数组代码 constdropRightWhile=(arr,func)=>{while(arr.length>0&&!func(arr[arr.length-1])

Array - dropRight

2019-04-19 描述从右边移除 n 个元素后返回一个新的数组。提示使用 Array.prototype.slice()从右边移除指定个数的元素。代码 constdropRight=(arr,n=1)=>arr.slice(0,-n);示例移除末尾 n 个元素:dropRight([1,2,3]);//[1,2]dropRight([1,2,3],2);//[1]dropRight([1,2,3],42);/

Array - drop

2019-04-18 描述返回一个移除左边 n 个元素的新数组。提示使用 Array.prototype.slice()从左边移除指定数目的元素。代码 constdrop=(arr,n=1)=>arr.slice(n);示例移除前 n 个元素:drop([1,2,3]);//[2,3]drop([1,2,3],2);//[3]drop([1,2,3],42);//[]返回总目录每天 30 秒系列之 JavaScript

Array - differenceWith

2019-04-17 描述过滤掉数组中所有元素经过对比函数后没有返回 true 的值。提示使用 Array.prototype.filter()和 Array.prototype.findIndex()获取相似的值。代码 constdifferenceWith=(arr,val,comp)=>arr.filter(a=>val.findIndex(b=>comp(a,b))===-1);示例获取 a 数组四舍五入后

Array - differenceBy

2019-04-16 描述传入的 2 个数组中的每个元素使用提供的函数后会返回一个新值,获取这 2 个数组中不同的新值。提示使用 b 数组中的每一个元素运行 fn 后的返回值来创建一个 Set。使用 Array.prototype.map()迭代 a 数组中的每一个元素进行 fn。使用 Array.prototype.filter()返回运行 fn 计算后的不同值。代码 constdifferenceBy=(a,b,fn)=>{con

Array - difference

2019-04-15 描述返回两个数组中不同的元素。提示使用 b 数组创建一个 Set 对 a 数组使用 Array.prototype.filter(),仅保留 b 中不存在的值。代码 constdifference=(a,b)=>{consts=newSet(b);returna.filter(x=>!s.has(x));};示例获取 a 数组中与 b 数组中不同的元素:difference([1,2,3],[1,2,4])

Array - deepFlatten

2019-04-14 描述对数组中的多层嵌套进行平铺。提示需要使用递归。使用展开操作符...展开一个数组。使用 Array.prototype.concat()把空数组[]和展开的数组合并后创建一个新数组。递归展开数组中的每一个元素。代码 constdeepFlatten=arr=>[].concat(...arr.map(v=>(Array.isArray(v)?deepFlatten(v):v)));

Array - countOccurrences

2019-04-13 描述计算数组中指定元素出现的次数。提示使用 Array.prototype.reduce()来增加计数迭代数组中的每个元素,如果其值和指定值相等时,计数就加 1。代码 constcountOccurrences=(arr,val)=>arr.reduce((a,v)=>(v===val?a+1:a),0);示例计算数组中 1 出现的次数:countOccurrences([1,1,2,1,

Array - countBy

2019-04-12 描述对数组元素依次传入指定函数后的返回值进行分类,并返回每种分类中的元素的个数。提示使用 Array.prototype.map()返回数组中每一个元素的属性名或指定函数的返回值。使用 Array.prototype.reduce()创建一个对象,key 为分组类型,值为该类型的元素个数。代码 constcountBy=(arr,fn)=>arr.map(typeoffn==='func

Array - compact

2019-04-11 描述移除数组中的假值。提示使用 Array.prototype.filter()过滤假值(false,null,0,"",undefined 和 NaN)。代码 constcompact=arr=>arr.filter(Boolean);示例返回数组中的真值:compact([0,1,false,2,'',3,'a','e'*23,NaN,'s',34]);//[1,2,3,'a','s

Array - chunk

2019-04-10 描述根据指定的大小把一个大数组分成一些较小的数组。提示使用 Array.from()创建一个新的小数组,用于存放大数组中符合条件的元素。使用 Array.prototype.slice()将大数组中的每个元素放入到一个长度为 size 的新的小数组中。如果原始的大数组无法进行平均分配,则将剩余的元素全部放入到最后一个新的小数组中。代码 constchunk=(arr,size)=>Arra

Array - bifurcateBy

2019-04-09 描述使用函数把集合中的元素分为两组,可通过函数来指定输入其中的元素被划分到哪一组。如果该函数返回真值,集合中的元素就属于第一组,否则就属于第二组。提示使用 Array.prototype.reduce()和 Array.prototype.push()把元素添加到不同的组中。根据集合中的每一个元素在 fn 中的返回值来进行分组。代码 constbifurcateBy=(arr,fn)=>a

Array - bifurcate

2019-04-08 描述把集合里面的元素分成两组。如果 filter 中的一个元素为真值时,在集合中与之相对应的元素就划分到第一组,否则就属于第二组。提示使用 Array.prototype.reduce()和 Array.prototype.push()把集合中的元素添加到对应的分组中。filter 需和集合中的元素保持一一对应。代码 constbifurcate=(arr,filter)=>arr.redu

Array - arrayToCSV

2019-04-07 描述把二位数组转换为使用逗号分割值(CSV)的字符串。提示使用 Array.prototype.map()和 Array.prototype.join(delimiter)把一维数组转换为使用逗号分割的字符串。使用 Array.prototype.join('\n')将二维数组中的行组合为 CSV 字符串,每一行都使用换行符作为分割。第二个参数 delimiter 可省略,默认值为,。代码 co

Array - any

2019-04-06 描述如果提供的函数对集合中的任意一个元素返回 true,那么就返回 true,否则返回 false。提示使用 Array.prototype.some()进行检测,如果 fn 对集合中的任意元素返回 true,那么就返回 true。第二个参数为 fn,默认值为 Boolean。代码 `constany=(arr,fn=Boolean)=>arr.some(fn);示例检测数组中的元素是否有满足条件的:

Array - allEqual

2019-04-05 描述检测数组中的元素是否都相等。提示使用 Array.prototype.every()检测数组中的所有元素是否和第一个元素相等。代码 `constallEqual=arr=>arr.every(val=>val===arr[0]);示例检测数组中的元素是否相等:allEqual([1,2,3,4,5,6]);//falseallEqual([1,1,1,1]);//true 返回总目

Array - all

2019-04-04 描述当提供的断言函数对集合中的所有元素都返回 true 时,就返回 true,否则返回 false。提示使用 Array.prototype.every()来测试集合中的所有元素在 fn 中是否返回 true。第二个参数为 fn,可使用 Boolean 作为默认值。代码 `constall=(arr,fn=Boolean)=>arr.every(fn);示例检测数组中的每一个元素是否都满足条件:all(

功能 - 仅接受一个参数

2019-04-03 描述创建一个函数,使其仅接受一个函数,忽略其他额外的参数。提示调用提供的方法:fn,使其只接受一个参数。代码 constunary=fn=>val=>fn(val);示例字符串数组转为整数数组:`['6','8','10'].map(unary(parseInt));//[6,8,10]` 返回总目录每天 30 秒系列之 JavaScript 代码

功能 - 柯里化展开

2019-04-02 描述传入一个参数可变的函数后返回一个闭包,该闭包接受一个数组作为参数,并且可以将参数展开后输入到一开始传入的函数中。提示使用扩展运算符展开传入的数组参数后并把其用闭包输入到 fn 中。代码 constspreadOver=fn=>argsArr=>fn(...argsArr);示例求数组中的最大值:constarrayMax=spreadOver(Math.max);arrayMax(