【发布时间】:2019-09-11 08:54:06
【问题描述】:
我需要创建一个名为 runOnRange 的函数。 我有一个包含三个属性的对象:开始、结束和步骤。 根据这些属性,它应该将特定数字推送到(新)数组。一旦完成,应该返回数组。
它是初学者,所以没有花哨的技术,只有循环和条件。
示例 - 我认为它们最能说明需要什么:
runOnRange({start: 10, end: 17, step: 3})
// => 10 // => 13 // => 16
runOnRange({start: -6, end: -4})
// => -6 // => -5 // => -4
runOnRange({start: 12, end: 12})
// 在这种情况下不应该记录任何内容!
runOnRange({start: 23, end: 26, step: -1})
// 在这种情况下不应该记录任何内容!
runOnRange({start: 26, end: 24, step: -1})
// => 26 // => 25 // => 24
runOnRange({start: 23, end: 26, step: 0})
// 在这种情况下不应该记录任何内容!
这是我目前的代码:
function runOnRange (object) {
var arrNew = []
var start = object.start
var end = object.end
var step = object.step
//Case 1: steps betwenn start and end range
if(start + step <= end && start + step >= start) {
for (var i = start; i <= end; i = i + step) {
arrNew[i]=i;
}
}
//Case 2: steps not set in which case increments in one
if (step == undefined) {
step == 1;
if(start + step <= end && start + step >= start) {
for (var i = start; i <= end; i = i + step) {
arrNew[i]=i
}
}
}
return arrNew
}
运行实例
runOnRange({start: 10, end: 17, step: 3})
会导致
(17) [empty × 10, 10, empty × 2, 13, empty × 2, 16]
在控制台中,所以至少有一个错误。
跑步
runOnRange({start: -6, end: -4})
导致一个空数组,即使它应该将 steps 参数设置为 1 并增加。
我在哪里搞砸了?
【问题讨论】:
-
// => -26 // => -25 // => -24为什么会有这个结果?起始数为正数,终点可达。 -
@NinaScholz 抱歉,错字,已编辑
-
您的案例 2 中有错字。“step == 1”应该是“step = 1”
标签: javascript arrays loops object