制作一个函数范围,有 3 个参数,但有例外?
Making a function range, with 3 parameters, with exceptions?
我正在尝试创建一个名为 range 的函数,它接受 3 个整数参数:开始、结束和步骤。
该函数应该return一个数字数组,从头到尾逐步计数。
如果参数不正确,函数应该return一个空数组,例如:
开始、结束或步骤未定义。
开始大于结束。
步骤为负。
这是我的代码:
const range = function(start, end, step) {
const result = []
for (let i = start; i <= end; i += step) {
return i || end || step == undefined ? []
: i > end ? []
: step < 0 ? []
: result.push(i)
}
return result;
}
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));
所有这些return一个空数组。
我是JavaScript的新手,所以请...您解释得越多,对我的帮助就越大。
谢谢。
for
循环的第一步是 return
。这将退出该功能。
return
上的表达式将 return start
(i
的初始值)除非它为零,在这种情况下 end
将被return编辑。
问题是
return i || end || step == undefined ? []
将测试 i
的真实性,或 end
的真实性,或 step
是否为 undefined
。如果 i
或 end
是正数(除其他外),整个条件将计算为 true
,并且空数组将被 returned.
如果您想检查是否有任何参数未定义,您可以使用 .some
,传入一个参数数组。
您也不应该 return
在 循环 for
中 - 测试输入是否无效 first 和 return 如果无效。然后,遍历循环,推到 result
,一旦循环完成,return the result
。例如,这是一种可能的实现方式:
const range = function(start, end, step) {
if (
[start, end, step].some(arg => arg === undefined)
|| start > end
|| step < 0
) {
return [];
}
const result = []
for (let i = start; i <= end; i += step) {
result.push(i)
}
return result;
}
console.log(range(10, 0, 3));
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));
const range = function(start, end, step) {
const result = []
for (let i = start; i <= end; i += step) {
i==undefined ? [] : end==undefined
? [] : step==undefined
? [] : i > end
? [] : step < 0
? [] : result.push(i)
}
return result;
}
console.log(range(10, 0, 3));
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));
我正在尝试创建一个名为 range 的函数,它接受 3 个整数参数:开始、结束和步骤。
该函数应该return一个数字数组,从头到尾逐步计数。
如果参数不正确,函数应该return一个空数组,例如:
开始、结束或步骤未定义。 开始大于结束。 步骤为负。
这是我的代码:
const range = function(start, end, step) {
const result = []
for (let i = start; i <= end; i += step) {
return i || end || step == undefined ? []
: i > end ? []
: step < 0 ? []
: result.push(i)
}
return result;
}
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));
所有这些return一个空数组。
我是JavaScript的新手,所以请...您解释得越多,对我的帮助就越大。
谢谢。
for
循环的第一步是 return
。这将退出该功能。
return
上的表达式将 return start
(i
的初始值)除非它为零,在这种情况下 end
将被return编辑。
问题是
return i || end || step == undefined ? []
将测试 i
的真实性,或 end
的真实性,或 step
是否为 undefined
。如果 i
或 end
是正数(除其他外),整个条件将计算为 true
,并且空数组将被 returned.
如果您想检查是否有任何参数未定义,您可以使用 .some
,传入一个参数数组。
您也不应该 return
在 循环 for
中 - 测试输入是否无效 first 和 return 如果无效。然后,遍历循环,推到 result
,一旦循环完成,return the result
。例如,这是一种可能的实现方式:
const range = function(start, end, step) {
if (
[start, end, step].some(arg => arg === undefined)
|| start > end
|| step < 0
) {
return [];
}
const result = []
for (let i = start; i <= end; i += step) {
result.push(i)
}
return result;
}
console.log(range(10, 0, 3));
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));
const range = function(start, end, step) {
const result = []
for (let i = start; i <= end; i += step) {
i==undefined ? [] : end==undefined
? [] : step==undefined
? [] : i > end
? [] : step < 0
? [] : result.push(i)
}
return result;
}
console.log(range(10, 0, 3));
console.log(range(0, 10, 2));
console.log(range(10, 30, 5));
console.log(range(-5, 2, 3));