【问题标题】:Why does every return false? [duplicate]为什么每个都返回假? [复制]
【发布时间】:2021-06-10 21:34:59
【问题描述】:

const arr = [{id: 1, name: '123', price: 11, discount: 0, quantity: 1, total: 1}, {id: 2, name: '123', price: 11, discount: 0, quantity: 1, total: 1}];
const productsValidation = (data) => data.every(
    ({ id, name, price, discount, quantity, total }) =>
      id && name && price && discount && quantity && total
  );

console.log(productsValidation(arr));

我想检查数组中的对象是否包含我期望的值,但由于某种原因 each 返回 false。为什么?

【问题讨论】:

  • 因为discount 的值为0,这是虚假的。如果您只是想检查是否存在一个或多个键,则使用Object.keys 获取所有键并将其与您希望对象具有的键数组相交,或使用<key> in <object>。目前尚不清楚您要在代码中检查什么。
  • @Terry 哦,真的,谢谢你的提示

标签: javascript


【解决方案1】:

因为discount: 0 是布尔值false

解释:

id && name && price && discount && quantity && total

当且仅当每个项目都为真时才会为真。 0 在 Javascript 中不为 true,所以逻辑表达式的计算结果为 false,因为 0 是 discount 的值

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 2011-01-02
  • 2014-02-03
  • 2012-08-27
  • 2014-09-07
  • 2021-11-19
相关资源
最近更新 更多