Skip to content

overEvery (Lodash 兼容性)

使用 Array.every

这个 overEvery 函数在转换和检查条件函数的过程中会产生额外的开销。

改为使用更快、更现代的 Array.every 方法。

创建一个函数,该函数检查所有条件函数是否都返回真值。

typescript
const allValidator = overEvery(predicates);

参考

overEvery(...predicates)

接收多个条件函数,创建一个函数,该函数检查给定值是否满足所有条件。对复合条件检查或数据验证很有用。

typescript
import { overEvery } from 'es-toolkit/compat';

// 检查字符串条件
const isValidString = overEvery([
  value => typeof value === 'string',
  value => value.length > 3,
  value => value.includes('o'),
]);

isValidString('hello'); // => true
isValidString('hi'); // => false (长度为3以下)
isValidString('test'); // => false (没有'o')

// 检查数字范围
const isInRange = overEvery([
  num => num >= 0,
  num => num <= 100,
  num => num % 1 === 0, // 检查是否为整数
]);

isInRange(50); // => true
isInRange(-5); // => false (小于0)
isInRange(150); // => false (超过100)
isInRange(50.5); // => false (不是整数)

也可以检查对象属性。

typescript
import { overEvery } from 'es-toolkit/compat';

// 检查对象属性
const isValidUser = overEvery([
  'name', // name属性是否为真值
  { age: 30 }, // age是否为30
  ['active', true], // active是否为true
]);

isValidUser({ name: 'John', age: 30, active: true }); // => true
isValidUser({ name: '', age: 30, active: true }); // => false (name为空字符串)
isValidUser({ name: 'John', age: 25, active: true }); // => false (age不同)

参数

  • ...predicates (Array<Function | string | object | Array>): 要检查的条件函数。可以是函数、属性名、对象、属性-值对等。

返回值

((...args: any[]) => boolean): 返回一个函数,如果满足所有条件则返回 true,否则返回 false

采用 MIT 许可证发布。