Como iterar sobre chaves de objeto com JavaScript

Objetos personalizados não podem ser iterados usando o for...of ciclo. Além disso, você não pode usar métodos iteradores como map() e forEach(). Se o fizer, você receberá um TypeError em cada instância.

Em vez disso, use for...in para iterar sobre objetos. Esse método itera sobre todas as propriedades não-Symbol enumeráveis ​​do objeto.

No exemplo a seguir, usamos para iterar sobre todas as três propriedades de obje para cada propriedade, registramos uma string que consiste no nome da propriedade (ou seja, sua chave) e seu valor correspondente.

Inicializamos o loop com uma variável, prop, que conterá um nome de propriedade diferente (também conhecido como chave) em cada iteração das propriedades do objeto. O código especificado dentro do bloco será executado em cada iteração.

Aqui está uma pequena demonstração para demonstrar isso (clique em Resultado para ver a saída):

Dentro do loop, em cada iteração, registramos um dos nomes e valores de propriedade do objeto no console.

Outra maneira de iterar sobre as propriedades de um objeto é passando o objeto dentro Object.entries() e chamando o método. Isso retornará todas as propriedades enumeráveis ​​desse objeto dentro de um array multidimensional (array de arrays):

Em seguida, podemos percorrer isso usando qualquer um dos métodos do iterador de matriz:

Você também pode usar um for...of ciclo:

Aqui estão algumas demonstrações:

Aqui, como obtemos um array consistindo da chave e do valor em cada iteração, simplesmente os acessamos com entry[0] e entry[1] respectivamente. Se você quiser apenas as chaves em vez da chave e do valor, use Object.keys() no lugar de Object.entries().

for...of é basicamente o mesmo:

Conclusão

Essas são as maneiras pelas quais podemos iterar facilmente as propriedades e chaves de um objeto em JavaScript. Confira nossos posts sobre JavaScript para mais artigos e tutoriais.

[ad_2]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *