【发布时间】:2020-11-04 03:01:56
【问题描述】:
我正在尝试创建一个函数,该函数接受一个包含嵌套数组和一个数字的数组。我用作参数的数组表示不同学生出现在课堂上的时间,每个嵌套数组是一组时间。该数字代表开始上课时需要出现的最少学生人数。每个嵌套数组中的值都是数字,这些数字必须为 0 或负数。如果 0 和负数的数量等于或大于课程开始所需的学生人数,则该函数应将一个真正的布尔值推送到该函数稍后将返回的数组中。如果没有足够的学生,它必须将一个假布尔值推入同一个数组。因此,如果我们有 3 个嵌套数组,第一个包含足够的学生,而另外两个没有,则返回结果应该是 [true, false, false]。 这是我到目前为止所写的:
function openings (arrayOfTimes, studentsRequired){
const openWhen = [];
for (let i = 0; i <= arrayOfTimes.length; i++){
var x = arrayOfTimes[i];
for (let j = 0; j <= x.length; j++){
let y = x[i];
let z = [];
if (y <= 0){
z.push(y);
}
let open = true;
if (z.length >= studentsRequired){
openWhen.push(open);
}
let notOpen = false;
if (z.length < studentsRequired){
openWhen.push(notOpen);
}
}
}
return openWhen;
}
console.log(openings([[1,2,0],[0,0,-1],[-2,-3,0]],2));
输出说“无法读取未定义的属性长度”,看到错误日志表明未定义的属性是x。
这是我第一次在另一个 for 循环中同时使用嵌套数组和 for 循环。我感谢任何关于我哪里出错的见解和解释。 非常感谢。
【问题讨论】:
-
如果错误是关于
x.length,那么arrayOfTimes中的至少一项本身不是数组或类似数组的对象,并且没有length。您应该编辑您的问题并显示您如何调用openings以及您传递给它的数据。 -
@scrappedcola 请不要要求将代码发布到第三方网站,因为这些链接可能会随着时间的推移而失效。可执行代码可以通过 Stack Snippet 直接放在问题中。
-
@ScottMarcus 我已经对其进行了编辑以显示我是如何称呼它的。
-
请使用足够的代码再次更新它以重现相关错误。此时,我们得到
"Uncaught ReferenceError: esteIngreso is not defined" -
@ScottMarcus 看来我落后了。注意到
标签: javascript arrays for-loop nested