Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre forEach e iterações

Bom dia galera! Estou com uma dúvida secular que está me atrasando muito nas ideias de projeto :'(

Eu gostaria de saber se é possivel eu retornar (cuspir na vdd kkkk) um valor encontrado em um loop - seja forEach ou for..in, while, seja qual for - para fora desse looping? Ex:

const exemplo = document.querySelectorAll('.meu-seletor');
exemplo.forEach(item=>{
    var minhaVariavel = item.getAttribute('data-oi');
    //return minhaVariavel não funciona para o que preciso :'
}
const exemplo2 = document.querySelector('#seletor-qualquer');
exemplo2.innerHTML = minhaVariavel;

Gostaria de saber como posso fazer isto (se for possível claro)! Se não for possível, qual método que eu consigo utilizar para pegar estar informações de maneira que eu não tenha que ficar fazendo varios loopings :D

Agradeço demais!

2 respostas
solução!

Olá André, tudo bem com você?

Poderia dar um exemplo com um código html para eu ver se entendi de fato ?

Você disse retornar um valor encontrado em um loop, no caso, retornar a primeira vez que aparece?

Neste caso o que você pretende é utilizar o find:

let array = [ 1, 2, 3, 99, 5, 7, 82, 41, 99]
resposta = array.find( valor => valor > 42)
>> 99

Agora caso você queira filtrar os elementos que tem esse atributo na verdade o que você pretende é o filter

let array = [ 1, 2, 3, 99, 5, 7, 82, 41, 99]
resposta = array.find( valor => valor > 42)
>> [ 99, 82, 99]

Agora se você pretende pegar todos elementos sem nenhuma filtragem, o que você pretende é um map:

    <ul >
        <li class="meu-seletor" data-oi="A"> Teste </li>
        <li class="meu-seletor" data-oi="B"> Teste2 </li>
        <li class="meu-seletor" data-oi="C"> Teste3 </li>
    </ul>

let valores = document.querySelectorAll('.meu-seletor')

[...valores].map(elemento => elemento.getAttribute('data-oi'))
>> Array(3) [ "A", "B", "C" ]

Todos exemplos anteriores que usei com número são validos para o html por exemplo poderíamos fazer:

[...valores].filter( elemento => elemento.getAttribute('data-oi')

Para pegar todos que tem esse atributo

Lembrando que o querySelectorAll nos devolve uma Node List e ai precisamos utilizar o ... (spread operator) para criar um array com o conteúdo dele

Acredito que uma dessas 3 opções devem te servir bem :)

Abraços e Bons Estudos!

Cara boa noite! Era exatamente a 3 opção que eu precisava! Me foi muito útil namoral, obrigadão mesmo chefe :D Neste terceira opção eu consigo salvar o valor em uma variável também? Por exemplo:

let valores = document.querySelectorAll('.meu-seletor')

const MinhaVariavel = [...valores].map(elemento => elemento.getAttribute('data-oi'))