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

在JavaScript/NextJS中获取首个真值以设置对象属性的方法

简洁处理对象属性的优先级赋值方案

在你的NextJS项目里,要实现按优先级给对象属性赋值,完全可以用JavaScript的逻辑运算符或者封装通用函数来避免冗余的if/else判断。

单个属性的简洁写法

根据你给出的优先级规则(首选person.nickname,空值则用person.firstName,都为空时用默认值Mr. Bond),可以直接用**逻辑或运算符||**快速实现:

const localItem = {
  name: person.nickname || person.firstName || 'Mr. Bond'
};

||会依次判断左侧值,只要是假值(比如空字符串''、null、undefined、0等)就会取右侧的值,刚好匹配你示例里的需求。

如果你需要更严格的判断——只在值为null或undefined时才 fallback(比如允许空字符串作为有效值),可以用空值合并运算符??:

const localItem = {
  name: person.nickname ?? person.firstName ?? 'Mr. Bond'
};

??只会在左侧是null或undefined时才取右侧,不会把空字符串、0这类假值当成“缺失”。

多属性通用方案

如果有很多属性都需要按这种优先级赋值,建议封装一个通用工具函数,避免重复代码:

// 自定义优先级取值函数:返回第一个非空(非null/undefined/空字符串)的值
const getPriorityValue = (...candidates) => {
  return candidates.find(val => val != null && val !== '');
};

// 批量使用示例
const localItem = {
  name: getPriorityValue(person.nickname, person.firstName, 'Mr. Bond'),
  email: getPriorityValue(person.customEmail, person.workEmail, 'default@example.com'),
  age: getPriorityValue(person.displayAge, person.actualAge, 30)
};

这个函数可以根据你的需求调整判断逻辑,比如如果允许空字符串,就把判断条件改成val != null即可。

内容的提问来源于stack exchange,提问作者Octo Palm Tree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:10