Manipulação de Listas

Voltar para Página Inicial

Sobre o exercício

Aprimorar programa de lista de compras
Criar a opção de remover algum item da lista, que será exibida junto à pergunta de "você deseja adicionar uma comida na lista de compras"?
A partir daí, caso o usuário escolha essa opção, o programa irá imprimir os elementos presentes na lista atual, e o usuário deverá escrever qual deles deseja remover.
Depois disso, o programa irá remover o elemento da lista e imprimir a confirmação de que o item realmente não está mais lá.
Por fim, ele voltará para o ciclo inicial de perguntas.
Se, na hora de deletar o item, o mesmo não for encontrado na lista, o programa deverá exibir uma mensagem avisando isso.

Código


function removeItem(array, index){
    array.splice(index,1)
}
function adicionaItem(array, item, index){
    array[index].push(item)
}
function verificaItem(listaCategorias,categoria,listaItens,item){
    if(listaCategorias.includes(categoria)){
        let index = listaCategorias.indexOf(categoria)
        adicionaItem(listaItens,item,index)
    }
    else{
        alert('Categoria não existe. Item não adicionado')
    }
}
function exibeLista(lista,listaItens){
    return lista.map(categoria => {
        return `${categoria}: ${listaItens[lista.indexOf(categoria)]}\n`
    }).join('')
}
function listaCompras(){
    let listaCategorias = ['frutas','laticinios','congelados','doces']
    let listaItens = []
    for (let index = 0; index < listaCategorias.length; index++) {
        listaItens.push([])
    }
    let index
    let confirmacao
    
    let inicio = prompt('Olá\nVocê deseja adicionar um item na sua lista de compras?\nDigite 1 para SIM ou 2 para NÃO')
    if(inicio == 1){
        let item = prompt('Digite o item que deseja acrescentar')
        let categoria = prompt(`Em qual categoria esse item se encaixa:\n${listaCategorias}`)
        verificaItem(listaCategorias,categoria,listaItens,item)
        while(true){
            let continua = prompt('Deseja continuar alterando a lista?\nDigite 1 para SIM ou 2 para NÃO')
            if(continua != 1) break

            let resposta = prompt('Digite 1 para ADICIONAR um item e 2 para REMOVER um item')
            if(resposta == 1){
                item = prompt('Digite o item que deseja acrescentar')
                categoria = prompt(`Em qual categoria esse item se encaixa:\n${listaCategorias}`)
                verificaItem(listaCategorias,categoria,listaItens,item)
            }
            else if(resposta == 2){
                confirmacao = true
                item = prompt(`Lista de compras atual:\n${exibeLista(listaCategorias,listaItens)}\nDigite o item que deseja remover`)
                listaItens.forEach(lista => {
                    if(lista.includes(item)){
                        index = lista.indexOf(item)
                        removeItem(lista,index)
                        confirmacao = false 
                    }
                })
                if(confirmacao){
                    alert('Não foi possível encontrar o item dentro da lista')
                }
            }
            alert(`Lista de compras:\n${exibeLista(listaCategorias,listaItens)}
            `)
        }
    }
    alert('Até mais')
}
            

Testar Código