Uma pessoa publicou um check-in por engano no PaceUp e quer excluí-lo. Antes da remoção, a aplicação pede confirmação: se a pessoa cancelar, o check-in deve permanecer como estava.
Complete a função excluirCheckin, que recebe:
checkins: um array de objetos do tipo Checkin;id: o identificador do check-in que a pessoa quer excluir;confirmado: true quando a pessoa confirmou ou false quando cancelou.O tipo e a assinatura da função já estão no código inicial:
type Checkin = {
id: string;
message: string;
ownerId: string;
favorite: boolean;
};
function excluirCheckin(
checkins: Checkin[],
id: string,
confirmado: boolean,
): Checkin[]
A função deve retornar um array seguindo estas regras:
confirmado: true, exclua somente o check-in cujo id seja exatamente
igual ao informado;confirmado: false, preserve todos os check-ins;Considere que os IDs são únicos dentro da lista. A comparação diferencia letras
maiúsculas e minúsculas: "ci-A" e "ci-a" são identificadores diferentes.
O retorno é sempre um array. Se a lista estiver vazia ou o único item for
excluído, retorne []. Quando não houver alteração, você pode retornar o
próprio array recebido ou uma cópia com o mesmo conteúdo.
Considere esta lista:
const checkins: Checkin[] = [
{
id: "ci-10",
message: "Treino concluído!",
ownerId: "user-1",
favorite: false,
},
{
id: "ci-20",
message: "Treino concluído!",
ownerId: "user-2",
favorite: true,
},
];
Os dois check-ins têm a mesma mensagem. Confirmar a exclusão de "ci-20"
deve remover apenas o segundo item:
excluirCheckin(checkins, "ci-20", true)
// Retorno esperado:
// [
// {
// id: "ci-10",
// message: "Treino concluído!",
// ownerId: "user-1",
// favorite: false,
// },
// ]
Após a chamada, o array original checkins ainda deve conter os dois itens.
| Chamada | Conteúdo do array retornado |
|---|---|
excluirCheckin(checkins, "ci-20", false) |
os dois check-ins, na ordem original |
excluirCheckin(checkins, "ci-99", true) |
os dois check-ins, na ordem original |
excluirCheckin([], "ci-20", true) |
[] |
Pratique condições booleanas, comparação de identificadores e construção de
um array sem modificar a entrada. O método filter pode ajudar: ele cria um
novo array com os itens que atendem à condição fornecida.
Neste desafio, a exclusão é uma simulação em memória. No aplicativo, a remoção
do documento acontece com deleteDoc, e o listener apresenta a lista atualizada.
Mantenha o tipo Checkin, o nome da função e seus parâmetros. Não utilize any
ou console.log: o resultado deve ser devolvido com return.