在返回true或false之前,迭代集合中的所有值

时间:2018-01-10 01:57:02

标签: javascript html ecmascript-6 lodash

我想知道是否有更多“功能性”的方法来做到这一点。意思是,而不是必须做这样的事情:

let flag = true;
[1, 2, 3].forEach(n => if (n > 2) flag = false);
return flag;

我正在寻找更接近这个的东西:

return [1, 2, 3].overEvery(n => n > 2);

我找到的最接近的解决方案是Array.prototype.every函数,但是一旦返回false就会终止,而不会迭代集合中的其余值。

我不想终止的原因是因为我想遍历表单中的所有字段以显示所有表单错误,然后在表单的onsubmit处理程序中返回true或false。

4 个答案:

答案 0 :(得分:1)

您可以使用Array.filter,如果您对应该失败的元素返回true,它将返回验证失败的元素。

答案 1 :(得分:0)

这是另一种方法:



function a()
{
  var flag = true;
  [1, 2, 3].forEach(function(value) { if(value > 2) flag = false; });
  return flag;
}

console.log(a());




答案 2 :(得分:0)

你可以做一个新的原型函数,就像检查所有记录一样:

int test = tts.synthesizeToFile(text, null, file, "tts");
if (test == TextToSpeech.SUCCESS) {
    Log.v(TAG, "Success");
}

答案 3 :(得分:0)

使用Array#every,并检查每个数字是否大于2. Array#every的另一个优点是每当回调返回false时,迭代停止,并返回结果。< / p>

const flag = [1, 2, 3].every((n) => n <= 2);

console.log(flag);