Как мне отсортировать список объектов на основе ключа с условным доступом в Javascript (и Flow)? - PullRequest
0 голосов
/ 02 июля 2019

Итак, у меня есть список предметов

const items = this.props.complex_object?.items;

И я бы хотел отсортировать эти предметы по ключу. Я естественно хотел бы выполнить следующее

const sortedItems = this.props.complex_object?.items.sort(
  (a, b) => a?.confidence > b?.confidence
);

Все же я получаю следующую ошибку потока.

Flow does not yet support method or property calls in optional chains.

Что в некоторой степени имеет смысл, поскольку items относится к типу потока ?Array<ItemType>. Учитывая условную природу существования Items, я попытался проверить наличие нулевых и неопределенных

var items = this.props.complex_object?.items;

if (items === null || items === undefined)
  items = [];

const sortedItems = items.sort((a, b) => a. confidence > b.confidence);

return (<Table items=sortedItems>);

Но это не облегчает проблему. Итог, как мне отсортировать массив необязательных объектов?

Большое спасибо заранее

1 Ответ

2 голосов
/ 02 июля 2019

Если вы знаете, что props.complex_object будет существовать всегда, вы можете сделать

var items = this.props.complex_object.items || [];

Если items не существует в вашем complex_object (не определено) или существует, но имеет значение undefined или null, тогда по умолчанию он будет пустым массивом.

...