如何将多个结果返回到数组?

时间:2019-09-16 23:52:07

标签: javascript arrays

任务是构建一个函数,在该函数中接收将作为限制的数组和数字。事实是,它应该返回一个数组,其结果是这样的布尔值:(即[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);

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