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

Lodash _.every空断言参数时如何工作?如何替换为原生every方法?

用原生every替代Lodash _.every(无断言参数场景)

当你调用_.every(arr)时,Lodash默认会检查数组里的每一个元素是否为真值(truthy)——也就是元素在布尔上下文里会被转为true的情况,比如非空字符串、非零数字、对象等。

而原生Array.prototype.every如果不传回调函数,会把数组元素当作函数去执行,这显然会报错(除非数组里全是函数)。要和Lodash行为一致,你需要给原生every传入一个返回元素本身的回调,有两种常用写法:

  • 直接用Boolean构造函数:arr.every(Boolean)
  • 用箭头函数:arr.every(x => x)

这两种写法都会让原生every检查每个元素是否为真值,和_.every(arr)的效果完全一致。

举个例子验证:

const arr1 = [1, "hello", {}, true];
// Lodash
_.every(arr1); // true
// 原生
arr1.every(Boolean); // true
arr1.every(x => x); // true

const arr2 = [0, "", null, false];
_.every(arr2); // false
arr2.every(Boolean); // false
arr2.every(x => x); // false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:50:41