gpt4 book ai didi

javascript - 如何循环遍历对象(评估三个属性)并正确插入数组?

转载 作者:行者123 更新时间:2023-11-28 14:14:56 25 4
gpt4 key购买 nike

我需要创建一个名为 runOnRange 的函数。我有一个包含三个属性的对象:开始、结束和步骤。根据这些属性,它应该将特定数字推送到(新)数组。完成后,应该返回该数组。

这是初学者,所以没有花哨的技术,只有循环和条件。

示例 - 我认为它们最好地解释了所需内容:

runOnRange({start: 10, end: 17, step: 3})

// => 10 // => 13 // => 16

runOnRange({start: -6, end: -4})

// => -6 // => -5 // => -4

runOnRange({start: 12, end: 12})

// nothing should be console.logged in this case!

runOnRange({start: 23, end: 26, step: -1})

// nothing should be console.logged in this case!

runOnRange({start: 26, end: 24, step: -1})

// => 26 // => 25 // => 24

runOnRange({start: 23, end: 26, step: 0})

// nothing should be console.logged in this case!

这是我到目前为止的代码:

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})

即使应该将步骤参数设置为 1 并增加,也会导致空数组。

我哪里搞砸了?

最佳答案

为了不创建稀疏数组,您需要仅将 arrNew[i] 中的 i 增加 一个,而不是步骤 - 但使用 push 会更容易。

更简单的是,我只是一个简单的 while 循环,其中函数采用默认为 1 的可选 step 参数:

function runOnRange ({ start, end, step = 1 }) {
const arr = [];
if (step === 0) { // an odd exception...
return arr;
}
let currNum = start;
while (start < end ? (currNum < end) : (currNum > end)) {
arr.push(currNum);
currNum += step;
}
return arr;
}

console.log(runOnRange({start: 10, end: 17, step: 3}));
console.log(runOnRange({start: 12, end: 12}));
console.log(runOnRange({start: 26, end: 24, step: -1}));

关于javascript - 如何循环遍历对象(评估三个属性)并正确插入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com