Não sei se entendi o desafio, mas acho que foi o que fizemos na aula. Eu fiz uma mudança, toda vez que atualiza um item ele vai para o final da lista.
const validarDados = (array) => (array.nome && array.quantidade ? true : false)
function captarDados(e) {
let nome = e.target.elements['nome-item']
let quantidade = e.target.elements['qtd-item']
const dados = {
nome: nome.value,
quantidade: quantidade.value
}
if (validarDados(dados)) {
const existe = itens.find((el) => el.nome === dados.nome)
if (existe) {
dados.id = existe.id
itens[existe.id] = dados
atualizaDado(dados)
criarElemento(dados)
} else {
dados.id = itens.length
criarElemento(dados)
itens.push(dados)
}
} else {
alert('Favor preencher todos os campos!')
}
setDados(itens)
nome.value = ''
quantidade.value = ''
}
function criarElemento(array) {
let strong = document.createElement('strong')
strong.dataset.id = array.id
strong.classList.add('qtd-item')
let btn = document.createElement('button')
btn.classList.add('del-btn')
strong.textContent = `${array.quantidade}`
btn.textContent = 'x'
let li = document.createElement('li')
li.classList.add('lista__item')
li.appendChild(strong)
li.innerHTML += `<span class="nome-item">${array.nome}</span>`
li.appendChild(btn)
lista.appendChild(li)
}
function setDados(array) {
localStorage.setItem('itens', JSON.stringify(array))
}
function atualizaDado(item) {
let dado = document.querySelector(`[data-id="${item.id}"]`)
dado.innerHTML = item.quantidade
lista.removeChild(dado.parentNode)
}