O erro TypeError: Object is not iterable ocorre quando você tenta usar um valor que não é iterável, como um objeto comum ou null, em um loop que exige um valor iterável, como for...of ou Array.forEach(). Esse erro geralmente acontece quando você tenta iterar sobre um valor que não é um array, string ou outro tipo de estrutura iterável.
Aqui está um exemplo de código que pode gerar esse erro:
let obj = {a: 1, b: 2};
for (let item of obj) { // TypeError: Object is not iterable
console.log(item);
}
Neste exemplo, o erro ocorre porque o objeto obj não é iterável, e o for...of não pode ser usado diretamente com objetos comuns. O for...of só funciona com tipos iteráveis como arrays e strings.
Como corrigir?
O erro pode ser corrigido de duas formas principais:
-
Use
Object.entries()ouObject.keys()para iterar sobre objetos: Se você precisa iterar sobre um objeto, pode usarObject.entries()ouObject.keys()para obter um array de chaves ou entradas, que pode ser iterado com um loop. -
Verifique o tipo de dado antes de iterar: Sempre verifique se o valor que você deseja iterar é realmente um tipo iterável antes de usar um loop.
Aqui está um exemplo corrigido utilizando Object.entries():
let obj = {a: 1, b: 2};
for (let [key, value] of Object.entries(obj)) {
console.log(key, value);
}
// Saída: a 1
// b 2
Neste exemplo, Object.entries() converte o objeto em um array de pares chave-valor, que pode ser iterado usando for...of.
Como evitar o erro Object is not iterable ao usar loops
Esse erro destaca a importância de verificar o tipo de dado que você está tentando iterar. Em JavaScript, objetos comuns não são iteráveis por padrão, e é importante usar os métodos corretos para manipulá-los em loops. Se você tentar usar um loop de forma inadequada, como no caso de um objeto comum, o erro Object is not iterable vai ocorrer.
Algumas aplicações:
- Use
Object.entries()ouObject.keys()para iterar sobre objetos. - Garanta que o valor que você deseja iterar seja de um tipo compatível com o loop (como arrays ou strings).
- Evite usar loops diretamente sobre objetos que não sejam iteráveis, como
nullouundefined.
Dicas para quem está começando
- Se você receber o erro
Object is not iterable, verifique se o valor realmente é um array ou string. - Use métodos como
Object.keys()para acessar as chaves de objetos e iterar sobre elas de forma segura. - Pratique o uso de arrays e objetos de forma consciente, verificando sempre o tipo de dado antes de usá-los em loops.
Andressa Maria
Desenvolvedora sênior com forte atuação em PHP, JavaScript e tecnologias de backend.
Mais sobre o autor