我怎样才能缩短这个三元运算符?
How can I shorten this ternary operator?
我有存储从数据库中检索到的信息的代码。
因为我的 JavaScript 代码是异步的并且需要时间来检索数据,我认为它会存储错误而不是数据。
有一个现有的辅助函数可以检查高级的嵌套对象。我想缩短此函数并阻止三元运算符返回 ''
.
const ratingAggregateCount = IsNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "count") ? currentProjectDetails.ratingAggregate.count : '';
const ratingAggregateAverage = sNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "average") ? currentProjectDetails.ratingAggregate.average.toFixed(1) : '';
const ratingWiseCounts = (!!currentProjectDetails.ratingWiseCounts ) ? currentProjectDetails.ratingWiseCounts : '';
如果 IsNestedObjectKeyPresent
助手主要用于此目的,则可以使用 returns 空字符串的助手代替:
const ratingAggregateCount = nestedObjectKeyOrEmptyString(currentProjectDetails, "ratingAggregate", "count");
这就是像 Lodash get
这样的安全导航函数中的默认值参数。
没有必要使用与条件相同的值的三元组,它可以被短路:
const ratingWiseCounts = currentProjectDetails.ratingWiseCounts || '';
如果已知值唯一可能为假的情况是 undefined
,可以使用解构默认值:
const { ratingWiseCounts = '' } = currentProjectDetails;
你可以使用短路运算符&&
const ratingAggregateCount = IsNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "count") && currentProjectDetails.ratingAggregate.count;
const ratingAggregateAverage = sNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "average") && currentProjectDetails.ratingAggregate.average.toFixed(1);
const ratingWiseCounts = (!!currentProjectDetails.ratingWiseCounts ) && currentProjectDetails.ratingWiseCounts;
示例
const a = true && "assign";
const b = "something" && "assign";
const c = false && "not assign";
const d = undefined && "not assign";
const e = null && "not assign";
const f = "" && "not assign";
console.log({a,b,c,d,e,f});
我有存储从数据库中检索到的信息的代码。
因为我的 JavaScript 代码是异步的并且需要时间来检索数据,我认为它会存储错误而不是数据。
有一个现有的辅助函数可以检查高级的嵌套对象。我想缩短此函数并阻止三元运算符返回 ''
.
const ratingAggregateCount = IsNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "count") ? currentProjectDetails.ratingAggregate.count : '';
const ratingAggregateAverage = sNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "average") ? currentProjectDetails.ratingAggregate.average.toFixed(1) : '';
const ratingWiseCounts = (!!currentProjectDetails.ratingWiseCounts ) ? currentProjectDetails.ratingWiseCounts : '';
如果 IsNestedObjectKeyPresent
助手主要用于此目的,则可以使用 returns 空字符串的助手代替:
const ratingAggregateCount = nestedObjectKeyOrEmptyString(currentProjectDetails, "ratingAggregate", "count");
这就是像 Lodash get
这样的安全导航函数中的默认值参数。
没有必要使用与条件相同的值的三元组,它可以被短路:
const ratingWiseCounts = currentProjectDetails.ratingWiseCounts || '';
如果已知值唯一可能为假的情况是 undefined
,可以使用解构默认值:
const { ratingWiseCounts = '' } = currentProjectDetails;
你可以使用短路运算符&&
const ratingAggregateCount = IsNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "count") && currentProjectDetails.ratingAggregate.count;
const ratingAggregateAverage = sNestedObjectKeyPresent(currentProjectDetails, "ratingAggregate", "average") && currentProjectDetails.ratingAggregate.average.toFixed(1);
const ratingWiseCounts = (!!currentProjectDetails.ratingWiseCounts ) && currentProjectDetails.ratingWiseCounts;
示例
const a = true && "assign";
const b = "something" && "assign";
const c = false && "not assign";
const d = undefined && "not assign";
const e = null && "not assign";
const f = "" && "not assign";
console.log({a,b,c,d,e,f});