2019-05-25 描述改变原始数组,使其过滤掉指定的值。提示使用 Array.prototype.filter()和 Array.prototype.includes()获取不需要的值通过使用 Array.prototype.length=0 将原始数组的长度重置为 0,从而改变传入的数组使用 Array.prototype.push()为原始数组重新填入过滤掉的值如果不需要修改原始数组的话可参见 withou
2019-05-24 描述 ⚠️ 警告:该方法的执行时间和数组中的每一个元素呈指数增长。任何超过 8 到 10 个元素的数组将会导致你的浏览器由于尝试解决所有不同的组合而被挂起。为数组中的元素生成所有的排列组合。提示使用递归依次指定数组中的每一个元素,然后使用剩下的元素来创建对应部分的所有排列使用 Array.prototype.map()来连接指定元素和上一步骤中的排列组合结果使用 Array.prototype.
2019-05-23 描述使用提供的函数来判断每一个元素是否为真值,并以此把元素分为两组。提示使用 Array.prototype.reduce()创建一个包含两个数组的数组使用 Array.prototype.push()来添加元素,如果提供的函数返回 true 就添加到第一个数组中,如果提供的函数返回 false 就添加到第二个数组中代码 constpartition=(arr,fn)=>arr.reduce(
2019-05-22 描述把数组中指定个数的元素移动到末尾。提示使用 Array.prototype.slice()分别获取指定索引后的元素和之前的元素使用扩展运算符...把上一步得到的两个数组连接成一个数组如果 offset 为负数,元素将从后面移动到前面代码 constoffset=(arr,offset)=>[...arr.slice(offset),...arr.slice(0,offset)];示例
2019-05-21 描述返回数组中的第 n 个元素。提示首先使用 Array.prototype.slice()获取包含第 n 个元素的数组如果索引超出边界值,就返回 undefined 第二个参数 n 的默认值为 0 代码 constnthElement=(arr,n=0)=>(n===-1?arr.slice(n):arr.slice(n,n+1))[0];示例获取数组中指定索引的元素:nthElement(['a',
2019-05-20 描述如果提供的断言函数为数组中的每一个元素都返回 false,那么就返回 true,否则的话返回 false。提示使用 Array.prototype.some()来测试数组中是否有元素返回 true 第二个参数默认使用 Boolean 代码 constnone=(arr,fn=Boolean)=>!arr.some(fn);示例数组中的所有元素是否都不等于 2:none([0,1,3,0],x=>
2019-05-19 描述从提供的数组中返回 n 个最小的元素。如果 n 大于或等于数组的长度,那么就返回原数组(按照升序排列)。提示使用扩展运算符...对数组进行浅拷贝使用 Array.prototype.sort()对拷贝的数组进行升序排列使用 Array.prototype.slice()获取指定元素个数第二个参数 n 的默认值为 1 代码 constminN=(arr,n=1)=>[...arr].sort((a,
2019-05-18 描述从提供的数组中返回 n 个最大的元素。如果 n 大于或等于数组的长度,那么就返回原数组(按照降序排列)。提示使用扩展运算符...对数组进行浅拷贝使用 Array.prototype.sort()对拷贝的数组进行降序排列使用 Array.prototype.slice()获取指定元素个数第二个参数 n 的默认值为 1 代码 constmaxN=(arr,n=1)=>[...arr].sort((a,
2019-05-17 描述把数组中的值转换为一个 key-value 对象,这个对象使用原始值作为 key,对原始值使用提供的方法所返回的结果作为对应的 value。提示使用一个匿名的内部函数作用域来声明一个没有定义的内存空间使用闭包来存储返回值使用一个新的 Array 来存储原始数组及其每一个元素经过指定函数运行的结果值,如:[arr,arr.map(fn)]使用 Array.prototype.reduce 把新
2019-05-16 描述传入任意数目的可迭代对象或包含 length 属性的对象,返回其中最长的一个对象。如过多个对象有同样的长度,则返回前面的一个。如果没有对象传入的话,则返回 undefined。提示使用 Array.prototype.reduce()比较对象的 length 返回 length 最长的对象代码 constlongestItem=(...vals)=>vals.reduce((a,x)=>(x.
2019-05-15 描述返回数组中的最后一个元素。提示使用 arr.length-1 计算出给定数组中最后一个元素的索引值,并返回该元素。代码 constlast=arr=>arr[arr.length-1];示例获取数组中的最后一个元素:last([1,2,3]);//3 返回总目录每天 30 秒系列之 JavaScript 代码
2019-05-14 描述把数组中的对象转换成以指定符号分割的值(CSV),且这些值仅包含了 columns 中所指定的。提示创建表头:使用 Array.prototype.join(delimiter)组合 columns 中的所有值使用 Array.prototype.map()和 Array.prototype.reduce()为数组中的每一个对象创建行每一行中只能包含 columns 所指定的属性值,不存在的值
2019-05-13 描述把数组中的所有元素组连接成一个字符串,并返回这个字符串。使用指定的分隔符和末尾分隔符进行连接。提示使用 Array.prototype.reduce()把元素组合成一个字符串第二个参数 separator 默认值为,第三个参数 end 的默认值保持和 separator 一致代码 constjoin=(arr,separator=',',end=separator)=>arr.reduce(
2019-05-12 描述如果数组按照升序进行排列的话返回 1,如果降序的话返回-1 否则的话返回 0。提示使用前两个元素来判断排序的 direction 使用 Object.entries()循环迭代数组对象,并对他们进行两两对比如果 direction 发生变化的话返回 0 如果到达最后一个元素的话则返回 direction 代码 constisSorted=arr=>{letdirection=-(arr[0]-arr[
2019-05-11 描述使用提供的对比函数对比两个数组中同一位置的元素是否相等,返回相等的元素列表。提示 Array.prototype.findIndex()可以获取使用对比函数比对成功的索引值使用 Array.prototype.filter()获取比对成功的索引值元素列表代码 constintersectionWith=(a,b,comp)=>a.filter(x=>b.findIndex(y=>c
2019-05-10 描述两个数组中的每个元素通过使用提供的函数所返回的返回值相同时,则把该元素放入结果列表中。提示使用 Set 创建一个新集合,该集合为 b 数组中的元素使用提供的函数后的结果对 a 数组使用 Array.prototype.filter()来过滤掉集合中不存在的元素代码 constintersectionBy=(a,b,fn)=>{consts=newSet(b.map(fn));returna.
2019-05-09 描述返回两个数组中都存在的元素列表。提示从数组 b 中创建一个 Set 使用 Set.prototype.has()判断是否存在相同的值对数组 a 使用 Array.prototype.filter()来保留 b 中也存在的元素代码 constintersection=(a,b)=>{consts=newSet(b);returna.filter(x=>s.has(x));};示例返回两个数组中相同
2019-05-08 描述根据指定的值创建一个 n 纬数组。提示使用递归使用 Array.from 生成指定长度的数组在 Array.prototype.map()中递归生成新数组代码 constinitializeNDArray=(val,...args)=>args.length===0?val:Array.from({length:args[0]}).map(()=>initializeNDArray(va
2019-05-07 描述初始化一个按照指定值填充的数组。提示使用 Array(n)根据指定的长度创建一个数组使用 fill(v)为数组填充期待的值 val 的默认值为 0 代码 constinitializeArrayWithValues=(n,val=0)=>Array(n).fill(val);示例初始化一个长度为 5,值为 2 的数组:initializeArrayWithValues(5,2);//[2,2,2
2019-05-06 描述初始化一个指定开始结束范围的倒序数组,其元素的值间隔可以进行自定义。提示根据开始结束的范围使用 Array.from(Math.ceil((end+1-start)/step))创建一个特定长度的数组元素个数等于(end-start)/step 或者等于包含结束范围(end+1-start)/step 使用 Array.prototype.map()填充范围内正确的值起始位置的默认值