You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解Lodash中_.every方法的行为:全属性为null为何返回false

问题原因

你对_.every方法的传参规则理解有偏差,导致结果不符合预期,具体原因如下:

  • Lodash的集合类方法(包括_.every)的第二个predicate参数,会根据传入值的类型走不同的判断逻辑:
    1. 传入函数时,会对每个集合元素执行该函数,所有返回值为真值时最终返回true
    2. 传入非函数类型时,如果类型识别为object(注意typeof null在JS原生逻辑中返回object),会默认创建_.matches匹配器,要求集合中的每个元素都包含该对象的所有键值对,而非判断元素和该值直接相等
  • 你传入的第二个参数是null,Lodash会将其识别为匹配用的源对象,而_.matches(null)对任何值的判断结果都是false,所以最终返回false
正确写法

如果你要判断对象所有属性值都等于null,可以用以下两种写法:

  1. 传入自定义判断函数
const val = _.every(items, v => v === null)
  1. 用Lodash内置的_.isNull判断方法
const val = _.every(items, _.isNull)

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:06:04