Отфильтруйте expired=false, отсортируйте по order, разверните каждую value, объедините и удалите повторные символы через Set. Для примера получится 1zyx2badc.
Функция для объединения уникальных символов из отфильтрованных записей
Отфильтруйте expired=false, отсортируйте по order, разверните каждую value, объедините и удалите повторные символы через Set. Для примера получится 1zyx2badc.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию (или последовательность операций), которая возвращает строку, сформированную по следующим правилам:
- берём только те объекты, у которых поле
expiredравноfalse; - сортируем отобранные элементы по возрастанию свойства
order; - из каждого выбранного объекта берём строку из поля
value, разворачиваем её символы в обратном порядке и объединяем их в одну строку; - итоговая строка должна содержать каждый символ лишь один раз (удаляем дубли). Пример входных данных:
const input = [
{ value: 'abcd', order: 4, expired: false },
{ value: 'qwer', order: 2, expired: true },
{ value: 'xyz1', order: 1, expired: false },
{ value: 'abx2', order: 3, expired: false },
];
Функция должна вернуть строку, полученную после применения указанных условий к массиву input.
Ответ
Отфильтруйте expired=false, отсортируйте по order, разверните каждую value, объедините и удалите повторные символы через Set. Для примера получится 1zyx2badc.
function collect(input) {
const joined = input
.filter(item => item.expired === false)
.sort((a, b) => a.order - b.order)
.map(item => [...item.value].reverse().join(''))
.join('');
return [...new Set(joined)].join('');
}
После сортировки строки идут как xyz1, abx2, abcd; после разворота — 1zyx, 2xba, dcba. Set сохраняет первое появление символа в объединённой строке. filter создаёт отдельный массив, поэтому sort не меняет input. Символы здесь — Unicode-кодовые точки.