任务是构建一个函数,在该函数中接收将作为限制的数组和数字。事实是,它应该返回一个数组,其结果是这样的布尔值:(即[true,false,false])。但是我不知道怎么做。
我尝试使用for循环填充一个空数组,但它只返回false。
function aperturas(arrayDeIngresosSemanales, cantMinEst) {
for (var i = 0; i < arrayDeIngresosSemanales.length; i++) {
var a = 0;
var arr = arrayDeIngresosSemanales[i];
for (var j = 0; j < arr.length; j++) {
if (arr[j] <= 0) {
a = a + 1;
}
}
if (a >= cantMinEst) {
return true;
} else {
return false;
}
}
}
aperturas([0,0,3,0],[1,2,4,5],[0,0,-1],3);
答案 0 :(得分:2)
return
超出了功能范围-而是使用结果数组:
function aperturas(arrayDeIngresosSemanales, cantMinEst) {
let result = [];
// ...
if (a >= cantMinEst) {
result.push(true);
}
result.push(false);
}
// ...
return result;
}
您甚至可以删除if
语句:
result.push(a >= cantMinEst);
答案 1 :(得分:0)
或者,或者,如果您想使用比for
循环更多的语义JS功能,则可以保留return语句,而使用map
函数。看起来像这样:
arrayDeIngresosSemanales.map((arr) => {
var a = 0;
for (var j = 0; j < arr.length; j++) {
if (arr[j] <= 0) {
a = a + 1;
}
}
if (a >= cantMinEst) {
return true;
} else {
return false;
}
})
通过相同的标记,您还可以将内部for
循环替换为reduce
,但这将留给读者练习。
答案 2 :(得分:0)
您不应该在评估数组元素后立即返回。
创建一个结果数组,并将每个数组的求值结果推入并返回结果。
此外,您没有正确调用该函数。第一个参数是一个数组数组,您必须像aperturas([[0, 0, 3, 0], [1, 2, 4, 5], [0, 0, -1]], 3)
function aperturas(arrayDeIngresosSemanales, cantMinEst) {
// Create an array to store the result.
var result = [];
for (var i = 0; i < arrayDeIngresosSemanales.length; i++) {
var a = 0;
var arr = arrayDeIngresosSemanales[i];
for (var j = 0; j < arr.length; j++) {
if (arr[j] <= 0) {
a = a + 1;
}
}
// Now compare with limit after iterating completely over the array.
if (a >= cantMinEst) {
result.push(true);
} else {
result.push(false);
}
}
// After iterating over all the arrays, return the result.
return result;
}
console.log(aperturas([[0, 0, 3, 0], [1, 2, 4, 5], [0, 0, -1]], 3));