作者:手机用户2602905005 | 来源:互联网 | 2022-10-18 11:14
我需要创建一个星期的日子的数组,我需要创建一个函数,它接受了一天数ñ和一天后返回ñ天(例如getDayAfter('Monday', 4)
将返回'Friday'
)。
我已经创建了名为的数组day
。它具有阵列中的星期几。
我正在创建一个函数RepeatArray
,它应该创建一个新的数组。
let day = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
function repeatArray(day, count) {
var ln = day.length;
var b = new Array();
var a = new Array();
for (i = 0; i
我希望输出为a, 13
星期一,但输出为0
。
1> IceMetalPunk..:
让我们看一下代码当前的功能,这通常是查找任何问题的好方法。
let day = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
这将在外部范围内创建星期几数组。
function repeatArray(day, count) {
这声明了repeatArray函数-遮盖了“ day”变量。由于它在全局范围内与“ day”数组具有相同的名称,因此该函数中引用“ day”的任何内容都将引用此参数,并且您将无法访问外部数组。
var ln = day.length;
var b = new Array();
var a = new Array();
ln现在是传递给函数的第一个参数的长度。b和a是空数组。
for (i = 0; i
对于所有从0到i的i,这会将第一个参数中位于i mod ln位置的值推入第一个参数。因此,如果第一个参数是数组['a','b','c'],且count为6,则它将推入'a','b','c','a','b' ,第一个参数的 'c' ,得到数组['a','b','c','a','b','c','a','b','c'] 。我认为这不是您想要的。但是,让我们继续。
return b;
该函数返回b,它仍然只是一个新的空数组,其中没有任何东西,因为我们还没有碰过它。
var a = new Array();
a.push("test1");
a.push("test2");
a.push("test3");
这将创建一个数组a,最终为['test1','test2','test3']。
var b = repeatArray(a, 13);
console.log(b.length);
在我们的函数调用中,“ day”将是数组a(因此['test1','test2','test3']),并且count将为13。由于函数每次都返回一个空数组,因此长度始终为为0。但是,将对数组a进行修改,使其重复执行“ test1”,“ test2”,“ test3” 13次,使其长度为16(13加初始3个值)。
对于您的任务,您不需要这种重复或创建新的数组。您可以只使用模块化数学:)
let day = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
function daysAfter(initial, n) {
const initialIndex = day.indexOf(initial);
return day[(initialIndex + n) % day.length];
}
所以现在daysAfter('wednesday', 13)
将等于tuesday
预期:)
好的答案,继续写那些:)