Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;“生成整数范围”;一行解决方案_Javascript_Arrays - Fatal编程技术网

Javascript &引用;“生成整数范围”;一行解决方案

Javascript &引用;“生成整数范围”;一行解决方案,javascript,arrays,Javascript,Arrays,我刚从codewars挑战开始,其中一个是“生成整数范围”问题。我设法解决了for循环的问题,但我想知道我是否可以在一行中解决这个问题 我尝试过使用填充和映射方法,并结合使用while和do-while循环。问题是我无法获取返回数组中的第一个数字(起始分钟)。当循环的计算结果第一次为true时,它返回按步长值递增的最小值 函数生成器(最小值、最大值、步长){ 返回数组(数学层((最大-最小)/步长)) .fill() .map(()=>{while(min类似的东西应该可以工作: 功能范围(

我刚从codewars挑战开始,其中一个是“生成整数范围”问题。我设法解决了for循环的问题,但我想知道我是否可以在一行中解决这个问题

我尝试过使用填充和映射方法,并结合使用while和do-while循环。问题是我无法获取返回数组中的第一个数字(起始分钟)。当循环的计算结果第一次为true时,它返回按步长值递增的最小值

函数生成器(最小值、最大值、步长){
返回数组(数学层((最大-最小)/步长))
.fill()

.map(()=>{while(min类似的东西应该可以工作:

功能范围(最小值、最大值、步长=1){
返回[…数组(数学地板((最大最小步长)/步长)).keys()].map(x=>x*step+min);
}
控制台日志(范围(0,10,2))
控制台日志(范围(2,5,1))
控制台日志(范围(1,25,5))
console.log(范围(0100,10))
函数生成器(最小值、最大值、步长){
返回“0”。重复(数学地板((最大-最小)/步长)+1)。拆分(“”)。映射((x,i)=>min+i*步长);
}

log(generateRange(0,10,2));
您可以将
min
递减一步,并将此值用于进一步映射

函数生成器(最小值、最大值、步长){
返回数组.from(
{length:Math.floor((max-(min-=步长))/step)},
()=>最小+=步长
);
}

console.log(generateRange(0,10,2));
紧贴原始代码:

函数生成器(最小值、最大值、步长){
返回数组(数学层((最大-最小+步长)/步长))
.fill()
.map(()=>{while(min这应该可以:
函数生成器(最小值、最大值、步长){
返回Array.from(数组(((max-min)/step)+1.keys()).map(el=>(el*step)+min);
}

log(generateRange(20,40,2));
我认为生成器函数对于这类东西很好

您的问题要求使用一行程序,尽管我认为它作为两个函数看起来更好。这是因为您可以在不需要阵列的其他地方使用生成器

function*iter\u生成器(最小、最大、步长){
对于(设l=min;l
[…(函数*(){

for(让l=min;l为什么映射调用中有一个while循环。没有意义您的逻辑将出现一个off-by-one错误,因为您包括开始和结束。从mdn中可能重复
步骤
?我是..呃落后了一步。。?