javascript - 使用数组方法时在哪里使用附加条件

标签 javascript arrays reduce

我试图解决以下问题:

Write a function that returns true if all array elements are true. Use reduce

这是我提出的解决方案

function allTrue(values) {
  if ( values[0] === false) return false
  if (values.length === 0) return true
  let result = values.reduce( (final, value) => final = value === true, true) 
  return result ? true : false
}

我的问题是,是否可以将外部条件移动到reduce方法的主体中。

也就是说,如果要求我使用单一的reduce方法来解决,我可以实现吗?

我尝试在reduce中操作final,但它会在下一次迭代中被修改

例如,以下测试应返回false,但返回true

allTrue([false, true])

如有任何解释,我们将不胜感激,谢谢

最佳答案

您的代码不起作用的原因是 reduce只返回数组中最后元素与 true 的比较结果。自 [false, true] 中的最后一个元素开始是 true ,它返回true .

请注意,您的代码过于复杂,您已经有效地将您的条件包含在reduce中(给出初始值 true 意味着零长度数组将返回 true )。您的一个问题是 reduce 中的代码不正确,您应该检查之前的值是否全部都是 true通过将当前值与所有先前值进行“与”运算来计算当前值:

const allTrue = (values) => values.reduce((curr, value) => curr && value, true);

console.log(allTrue([]));
console.log(allTrue([true]));
console.log(allTrue([false]));
console.log(allTrue([true, true, true]));
console.log(allTrue([false, true]));

关于javascript - 使用数组方法时在哪里使用附加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64112925/

相关文章:

javascript - 返回点击返回浏览器操作

c - RUN FAILED 退出值 5 尝试交换数组

javascript - 如何使用javascript reduce函数计算满足特定条件的项目的平均值?

apache-spark - Spark Streaming在减少时是否提供日期顺序的保证

javascript - 点击图片即可在jquery中显示其对应的Div

javascript - 覆盖 const 函数声明作为 JavaScript 中的键

arrays - swift : protocol extension and arrays

python - SKlearn X 和 Y 的 reshape 警告

loops - 迭代映射和减少操作

Javascript getElementsByTag 名称