为了账号安全,请及时绑定邮箱和手机立即绑定

“生成整数范围”单行解决方案

“生成整数范围”单行解决方案

绝地无双 2021-10-21 13:59:25
我刚开始遇到 codewars 挑战,其中之一是“生成整数范围”问题。我设法用 for 循环解决了问题,但我想知道是否可以在一行中解决这个问题?我曾尝试将填充和映射方法与 while 和 do-while 循环结合使用。问题是我无法在返回的数组中获取第一个数字(从 min 开始)。while 循环第一次评估为真时,它返回按步长值递增的最小值。function generateRange(min,max,step) {        return Array(Math.floor((max - min) / step ))                    .fill()                    .map(() => {while(min <= max) {return min+=step;}});    }    console.log(generateRange(0, 10, 2));我期待从最小到最大的数字,并在其中一步。min = 0, max = 10, step = 2, result => [0,2,4,6,8,10] 但我得到了没有第一个起始最小值 [2,4,6,8,10] 的所有数字.
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您可以递减min一步,然后将此值用于进一步映射。


function generateRange(min, max, step) {

    return Array.from(

        { length: Math.floor((max - (min -= step)) / step) },

        () => min += step

    );

}


console.log(generateRange(0, 10, 2));


查看完整回答
反对 回复 2021-10-21
?
HUWWW

TA贡献1874条经验 获得超12个赞

贴近您的原始代码:


function generateRange(min,max,step) {

return Array(Math.floor((max - min + step) / step ))

             .fill()

             .map(() => {while(min <= max) {return (min+=step)-step;}});

}

console.log(generateRange(0, 10, 2));


查看完整回答
反对 回复 2021-10-21
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

function generateRange(min, max, step) {

  return "0".repeat(Math.floor((max - min) / step) + 1).split("").map((x, i) => min + i * step);

}


console.log(generateRange(0, 10, 2));


查看完整回答
反对 回复 2021-10-21
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信