我需要一些帮助来修改或创建一个函数来完成一个简单的任务;
这是我的功能:
function arra(sum, length){
var array = [];
for(let i = 0; i < length; i++) {
array.push(0);
}
//console.log(array)
for(let i = 0; i < sum; i++){
array[i] ++
}
return array;
}
console.log(arra(0, 7));
console.log(arra(3, 7));
console.log(arra(7, 7));
console.log(arra(10, 7));
在这里,首先,我们创建一个带有的数组length
,然后将其推0
入其中的每个元素。所以数组将是:[0, 0, 0, 0 ,0 ,0 ,0]
然后根据sum
我想从的最后一个元素array
到开头添加1的值。问题是我想回到第一个元素,如果有足够的话再继续加1 sum
。
因此,如果执行此命令arra(3, 7);
:[0, 0, 0, 0 ,1 ,1, 1]
如果执行此命令:arra(7, 7)
我将拥有:[1, 1, 1, 1 ,1 ,1 ,1]
但是问题是当我执行此命令时:arra(10, 7)
我得到:[1, 1, 1, 1, 1, 1, 1, NaN, NaN, NaN]
那是意外的。我希望有 :[1, 1, 1, 1 ,2 ,2 ,2]
另一个问题是我无法从最后一个元素到第一个元素添加到数组...
编辑:伙计们如何解决?
如果要“环绕”,则可以使用长度的模数来索引数组array[i%length]
。如果您想从另一端开始,则可以从中减去array[length - 1 - i % length]
-我不清楚您想要哪个顺序,但是相同的想法在两种方式中都有效:
function arra(sum, length){
var array = Array(length).fill(0)
//console.log(array)
for(let i = 0; i < sum; i++){
array[length - 1 - i % length] ++
}
return array;
}
console.log(arra(0, 7));
console.log(arra(3, 7));
console.log(arra(7, 7));
console.log(arra(10, 7));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句