理解 lodash `.every` 行为

understanding lodash `.every` behavior

我有一个非常简单的例子,但我不明白为什么它不能像我预期的那样工作。

const items = { custom: null, preset: null }
const val = ._every(items, null)

这个returns false为什么???? 这段代码不应该意味着,如果对象中的每个 属性 都满足这个条件,那么 return 是真的吗?

对于对象,您应该使用如下谓词:

const items = { custom: null, preset: null }
console.log(_.every(items , e=> e === 42));
console.log(_.every(items , e=> e === null));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

@Michael 你是对的。文档没有明确提及它。但是如果你检查它的方法签名,它期望 Function 作为第二个参数,并且在那些例子中,有一些简短的用法版本。它们是:

// The _.matches iteratee shorthand. _.every(users, { 'user': 'barney', 'active': false }); // => false

// The _.matchesProperty iteratee shorthand. _.every(users, ['active', false]); // => true

// The _.property iteratee shorthand. _.every(users, 'active'); // => false

所以你的用法是 _.property iteratee shorthand。它需要一个 属性 名称。为 属性 名称提供 null 值会得到结果:false.