Как добавить в массив уникальную дату из другого массива?

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

let namesId = ["Вторник 17.08", "Среда 11.07", "Понедельник 17.08", "Суббота 23.09", "Среда 11.07", "Четверг 01.12", "Пятница 11.07", "Вторник 17.08", "Четверг 01.12", ];

function listKeyboard(keyBoard) {

    keyBoard = {
        "inline_keyboard": []
    };

    for (let i = 0; i < namesId.length; i++) {

        keyBoard.inline_keyboard[i] = [{
            "text": namesId[i],
            'callback_data': i
        }];

    }

    return keyBoard;

}
console.log(listKeyboard());


Ответы (1 шт):

Автор решения: renich

Получить уникальные можно через new Set().

const namesId = ["Вторник 17.08", "Среда 11.07", "Понедельник 17.08", "Суббота 23.09", "Среда 11.07", "Четверг 01.12", "Пятница 11.07", "Вторник 17.08", "Четверг 01.12", ];
const keyBoard = {
  inline_keyboard: [...new Set(namesId)].map((item, index) => ({
    text: item,
    callback_data: index
  }))
};
console.log(keyBoard);

Через for в функции.

const namesId = ["Вторник 17.08", "Среда 11.07", "Понедельник 17.08", "Суббота 23.09", "Среда 11.07", "Четверг 01.12", "Пятница 11.07", "Вторник 17.08", "Четверг 01.12", ];
const uniqueNamesId = [...new Set(namesId)];

function listKeyboard(keyBoard) {
    keyBoard = {
        "inline_keyboard": []
    };
    for (let index = 0; index < uniqueNamesId.length; index++) {
        keyBoard.inline_keyboard.push({
            text: uniqueNamesId[index],
            callback_data: index
        });
    }
    return keyBoard;
};
console.log(listKeyboard());

→ Ссылка