猿问

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

我刚开始遇到 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] 的所有数字.


绝地无双
浏览 120回答 3
3回答

天涯尽头无女友

您可以递减min一步,然后将此值用于进一步映射。function generateRange(min, max, step) {&nbsp; &nbsp; return Array.from(&nbsp; &nbsp; &nbsp; &nbsp; { length: Math.floor((max - (min -= step)) / step) },&nbsp; &nbsp; &nbsp; &nbsp; () => min += step&nbsp; &nbsp; );}console.log(generateRange(0, 10, 2));

HUWWW

贴近您的原始代码:function generateRange(min,max,step) {return Array(Math.floor((max - min + step) / step ))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.fill()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.map(() => {while(min <= max) {return (min+=step)-step;}});}console.log(generateRange(0, 10, 2));

qq_遁去的一_1

function generateRange(min, max, step) {&nbsp; return "0".repeat(Math.floor((max - min) / step) + 1).split("").map((x, i) => min + i * step);}console.log(generateRange(0, 10, 2));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答