Iterar sobre objetos é uma tarefa fundamental na programação em JavaScript. Ao contrário dos arrays, os objetos em JavaScript não são iteráveis por padrão, o que significa que você não pode usar métodos como forEach(), map() ou o loop for...of diretamente em um objeto. No entanto, existem várias formas de percorrer as propriedades de um objeto e acessar tanto as chaves quanto os valores. Neste artigo, vamos explorar diferentes métodos para iterar sobre um objeto JavaScript de forma eficiente, incluindo sintaxe, exemplos e casos de uso.
Principais conclusões: Os objetos JavaScript não são inerentemente iteráveis, mas existem diversos métodos para percorrer suas propriedades. O loop for...in é tradicional, mas exige uma verificação com hasOwnProperty(), enquanto métodos mais recentes, como Object.entries() com map()/forEach(), Object.keys() com forEach() e Object.values(), oferecem abordagens mais simplificadas. O método _.forOwn() do Lodash oferece uma sintaxe prática para quem já utiliza a biblioteca. A escolha do método de iteração depende dos requisitos de compatibilidade com navegadores, da legibilidade do código e dos casos de uso específicos. Embora o desempenho possa variar levemente entre os métodos, as diferenças geralmente são insignificantes para a maioria das aplicações, e os desenvolvedores devem priorizar a clareza e a facilidade de manutenção do código.
Escreva código mesmo que você seja iniciante com o Assistente de IA da Latenode
Método 1: Usando o loop for...in
O loop for...in é uma forma tradicional de iterar sobre as propriedades de um objeto. Ele permite acessar tanto as chaves quanto os valores de um objeto. Veja como funciona:
Sintaxe:
for (let key in object) {
if (object.hasOwnProperty(key)) {
// Perform operations with key and object[key]
}
}
Exemplo:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
for (let key in person) {
if (person.hasOwnProperty(key)) {
console.log(key + ': ' + person[key]);
}
}
Output:
name: John
age: 30
city: New York
É importante usar o método hasOwnProperty() dentro do loop para verificar se a chave pertence ao próprio objeto, e não à sua cadeia de protótipos. Isso garante que você itere apenas sobre as propriedades próprias do objeto e evite propriedades herdadas.
O loop for...in em JavaScript para percorrer um objeto é uma maneira direta de iterar sobre as propriedades de um objeto. No entanto, ele apresenta algumas limitações:
- Ele itera sobre todas as propriedades enumeráveis de um objeto, incluindo as herdadas da cadeia de protótipos. Por isso, é necessário usar hasOwnProperty() para filtrar as propriedades herdadas.
- A ordem de iteração não é garantida. As propriedades podem não ser acessadas na mesma ordem em que foram definidas.
Apesar dessas limitações, o loop for...in continua sendo um método amplamente usado para iteração de objetos devido à sua simplicidade e ao amplo suporte dos navegadores.
Método 2: Usando o método Object.entries() e o método map()
O método Object.entries() é uma adição mais recente ao JavaScript (introduzida no ECMAScript 2017) que retorna um array de pares [chave, valor] das propriedades próprias enumeráveis com chaves de string de um determinado objeto. Em seguida, podemos usar o método map() para iterar sobre o array e acessar as chaves e os valores.
Sintaxe:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
for (let key in person) {
if (person.hasOwnProperty(key)) {
console.log(key + ': ' + person[key]);
}
}
Output:
name: John
age: 30
city: New York
Exemplo:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
for (let key in person) {
if (person.hasOwnProperty(key)) {
console.log(key + ': ' + person[key]);
}
}
Output:
name: John
age: 30
city: New York
O método Object.entries() oferece uma maneira prática de obter um array de pares de chave e valor de um objeto. Ao combiná-lo com o método map(), você pode iterar facilmente sobre o array e executar operações em cada par de chave e valor.
Uma vantagem de usar Object.entries() é que ele retorna apenas as propriedades próprias enumeráveis do objeto, excluindo quaisquer propriedades herdadas da cadeia de protótipos. Isso elimina a necessidade de uma verificação adicional com hasOwnProperty().
No entanto, lembre-se de que Object.entries() não é compatível com navegadores mais antigos, como o Internet Explorer. Se a compatibilidade com navegadores for uma preocupação, talvez seja necessário usar um polyfill ou um método alternativo.
Para mais informações sobre Object.entries(), consulte a documentação da MDN.
Método 3: Usando o método forEach() e o método Object.keys()
O método Object.keys() retorna um array com os nomes das propriedades próprias enumeráveis (chaves) de um determinado objeto. Podemos usar o método forEach() para iterar sobre o array de chaves e acessar os valores correspondentes usando essas chaves.
Sintaxe:
Object.keys(object).forEach(key => {
// Perform operations with key and object[key]
});
Exemplo:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
Object.keys(person).forEach(key => {
console.log(key + ': ' + person[key]);
});
Output:
name: John
age: 30
city: New York
Usar Object.keys() em conjunto com forEach() oferece uma forma de iterar sobre as chaves de um objeto e acessar os valores correspondentes. Esse método é útil quando você precisa apenas das chaves de um objeto e deseja executar operações com base nessas chaves.
Assim como Object.entries(), Object.keys() retorna apenas as propriedades próprias enumeráveis do objeto, portanto você não precisa usar hasOwnProperty() para filtrar propriedades herdadas.
Para mais informações sobre Object.keys(), consulte a documentação da MDN.
Método 4: Usando o método _.forOwn() do Lodash
Lodash é uma biblioteca de utilitários popular que oferece um conjunto de funções úteis para trabalhar com objetos e arrays. Se você já usa Lodash em seu projeto, pode aproveitar o método _.forOwn() para iterar sobre as propriedades próprias de um objeto.
Sintaxe:
_.forOwn(object, (value, key) => {
// Perform operations with key and value
});
Exemplo:
const _ = require('lodash');
const person = {
name: 'John',
age: 30,
city: 'New York'
};
_.forOwn(person, (value, key) => {
console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York
O método _.forOwn() itera sobre as propriedades próprias enumeráveis de um objeto e fornece o valor e a chave à função de callback. Ele é uma alternativa prática ao loop for...in para percorrer objetos quando você já usa Lodash em seu projeto.
Observe que usar Lodash exige instalar a biblioteca e importá-la para seu projeto. Se você não usa Lodash para outros fins, talvez não seja necessário incluí-lo apenas para iterar sobre objetos.
Para mais informações sobre Lodash e seus métodos de iteração sobre objetos em JavaScript, consulte a documentação do Lodash.
Método 5: Usando o método Object.values() e o método forEach()
O método Object.values() retorna um array com os valores das propriedades próprias enumeráveis de um determinado objeto. Podemos usar o método forEach() para iterar sobre o array de valores. Se você também precisar das chaves correspondentes, pode usar o método Object.keys() em conjunto.
Sintaxe:
Object.values(object).forEach((value, index) => {
const key = Object.keys(object)[index];
// Perform operations with key and value
});
Exemplo:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
Object.values(person).forEach((value, index) => {
const key = Object.keys(person)[index];
console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York
Usar Object.values() permite iterar diretamente sobre os valores de um objeto. Se você também precisar das chaves correspondentes, poderá obtê-las usando Object.keys() e acessando a chave no mesmo índice do valor.
Esse método é útil quando você precisa trabalhar principalmente com os valores de um objeto e acessar as chaves opcionalmente quando necessário.
Para mais informações sobre Object.values(), consulte a documentação da MDN.
Conclusão
Neste artigo, exploramos vários métodos para iterar sobre um objeto JavaScript. Cada método tem suas próprias vantagens e casos de uso:
- O loop for...in é uma forma tradicional de iterar sobre um objeto em JavaScript. Ele é simples e amplamente compatível, mas exige uma verificação adicional com hasOwnProperty() para evitar iterar sobre propriedades herdadas.
- O método Object.entries(), combinado com map() ou forEach(), oferece uma forma concisa de acessar tanto as chaves quanto os valores de um objeto. Ele elimina a necessidade de hasOwnProperty(), mas pode não ser compatível com navegadores mais antigos.
- O método Object.keys(), junto com forEach(), permite iterar sobre as chaves de um objeto e acessar os valores correspondentes. Ele é útil quando você precisa trabalhar principalmente com as chaves.
- O método _.forOwn() do Lodash é uma opção prática se você já usa Lodash em seu projeto. Ele oferece uma sintaxe limpa para iterar sobre as propriedades próprias de um objeto.
- O método Object.values(), combinado com forEach(), concentra-se em iterar sobre os valores de um objeto. Você pode usar Object.keys() em conjunto se também precisar das chaves.
Ao escolher um método para iterar sobre um objeto JavaScript, considere fatores como compatibilidade com navegadores, legibilidade do código e requisitos específicos do seu caso de uso. Independentemente do método escolhido, entender como iterar sobre objetos de forma eficaz é essencial para uma programação JavaScript eficiente.
Escreva código mesmo que você seja iniciante com o Assistente de IA da Latenode


