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

Dúvidas sobre o retorno do método exec()

Bom, eu fiz os testes aqui com o método exec() da RegExp... Mas o que me deixou confuso foi a questão do retorno desse método. Pelo o que eu conheço, aquilo é uma estrutura onde o primeiro índice é o match. Tanto que se você acessa por exemplo resultado[0] ele vai retornar o match.

O que ficou confuso pra mim é que a estrutura retorna um array contendo o match, o índice de match e qual foi o input de comparação.

1º pergunta: Um array pode retornar uma propriedade como se fosse um índice? A estrutura vem dessa forma:

['a', index: 3, input: 'calopsita']

Eu achei que o certo para acessar a propriedade input era

resultado[1]

por retornar um array, e não

resultado.index

2º pergunta: Considerando que eu possa ter propriedades de objetos avulsos no índice de um array, para acessar o valor dessa propriedade a sintaxe será:

resultado.nome_da_propriedade

?

3 respostas
solução!

Boa tarde, Leonardo! Como vai?

A resposta para as duas perguntas é sim! Isso se chama array associativo. Só que na prática o JS trata essas estruturas como objetos normais e não arrays. Tanto é verdade que se vc fizer as operações a seguir, terá um resultado diferente do esperado:

let exp = new RegExp('a', 'gi');
let resultado = exp.exec('ola');
console.log(resultado); //["a", index: 2, input: "ola", groups: undefined]
console.log(resultado.length); // 1

Pegou a ideia? Qualquer coisa é só falar!

Para saber mais: https://www.w3schools.com/js/js_arrays.asp

Grande abraço e bons estudos, meu aluno!

Obrigado Gabriel. Não conhecia isso do JavaScript. Obrigado pela explicação.

Por nada, Leonardo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!