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

如何使用Lodash的_.get方法仅在双路径值都为空时返回默认值

解决方案

要实现这个需求,核心思路是先提取两个名称字段的值,判断它们是否都为空,再决定返回默认值还是拼接非空的字段。这里可以结合Lodash的_.get和数组过滤来处理,完美适配模板字符串的使用场景:

代码实现

const obj = { person: { firstName: 'John', lastName: '' } };

// 安全提取两个字段的值,默认设为空字符串
const firstName = _.get(obj, 'person.firstName', '');
const lastName = _.get(obj, 'person.lastName', '');

// 收集非空的名称片段,自动过滤空字符串/undefined等假值
const validNameParts = [firstName, lastName].filter(Boolean);

// 生成最终结果:无有效片段则返回默认值,否则拼接有效内容
const fullName = validNameParts.length ? validNameParts.join(' ') : 'noname noname';

// 在模板字符串中直接使用
console.log(`${fullName}`); // 输出 "John"

逻辑解释

  1. 安全提取字段:用_.get处理嵌套字段,默认值设为空字符串,统一兼容「字段不存在」和「字段值为空」两种情况。
  2. 过滤无效内容:filter(Boolean)会自动剔除空字符串、undefined等假值,只保留有实际内容的名称片段。
  3. 动态生成结果:如果过滤后的数组为空(说明两个字段都无有效内容),就返回默认的"noname noname";否则用空格拼接有效片段,避免出现多余的空格。

不同场景测试

  • 两个字段都有值:const obj = { person: { firstName: 'John', lastName: 'Doe' } } → 输出 John Doe
  • 仅一个字段为空:const obj = { person: { firstName: '', lastName: 'Doe' } } → 输出 Doe
  • 两个字段都为空:const obj = { person: { firstName: '', lastName: '' } } → 输出 noname noname
  • 嵌套对象不存在:const obj = {} → 输出 noname noname

如果想把逻辑压缩到模板字符串里(可读性稍弱但更简洁),也可以写成一行:

const obj = { person: { firstName: 'John', lastName: '' } };
const fullName = [_.get(obj, 'person.firstName', ''), _.get(obj, 'person.lastName', '')].filter(Boolean).join(' ') || 'noname noname';

console.log(`${fullName}`);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:51