Как я могу сократить этот троичный оператор? - PullRequest
0 голосов
/ 08 января 2019

У меня есть код, который хранит информацию, полученную из базы данных.

Поскольку мой код 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 : '';

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете использовать операторы короткого замыкания &&

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});
0 голосов
/ 08 января 2019

Если для этой цели в основном используется IsNestedObjectKeyPresent помощник, вместо него можно использовать помощник, который возвращает пустую строку:

const ratingAggregateCount = nestedObjectKeyOrEmptyString(currentProjectDetails, "ratingAggregate", "count");

Это то, для чего используется аргумент значения по умолчанию в функциях безопасной навигации, таких как Lodash get.

Нет необходимости использовать троицу для того же значения, которое используется в условии, оно может быть закорочено:

const ratingWiseCounts = currentProjectDetails.ratingWiseCounts || '';

В случае, если известно, что единственной возможностью для ложного значения может быть undefined, можно использовать значение по умолчанию для деструктуризации:

const { ratingWiseCounts = '' } = currentProjectDetails;
...