Отфильтруйте expired, отсортируйте копию по order, разверните каждую строку и добавляйте только ещё не встречавшиеся символы. Итог — '1zyx2badc'.
Создание уникальной строки из актуальных записей с учётом их порядка
Отфильтруйте expired, отсортируйте копию по order, разверните каждую строку и добавляйте только ещё не встречавшиеся символы. Итог — '1zyx2badc'.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Имеется массив объектов, каждый из которых содержит строковое поле value, числовой параметр order и логический флаг expired. Требуется собрать итоговую строку, включающую символы только из тех записей, у которых expired равно false. Записи необходимо отсортировать по полю order по возрастанию, а затем для каждой строки взять её символы в обратном порядке. При формировании результата следует исключить повторяющиеся символы, оставив каждый символ только один раз.
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 },
];
let buildString = () => {};
console.log(buildString); //1zyx2badc
Ответ
Отфильтруйте expired, отсортируйте копию по order, разверните каждую строку и добавляйте только ещё не встречавшиеся символы. Итог — '1zyx2badc'.
function buildString(input) {
const seen = new Set();
for (const item of input.filter(item => item.expired === false).sort((a, b) => a.order - b.order)) {
for (const char of Array.from(item.value).reverse()) seen.add(char);
}
return [...seen].join('');
}
console.log(buildString(input));
Set сохраняет порядок первого добавления. В условии console.log(buildString) печатал бы саму функцию, а не результат — нужен вызов с input. При равных order сохраняется исходный порядок элементов. Символы здесь понимаются как кодовые точки Unicode.