Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

120
Visualizações
How to loop over an array of nested objects

I'm facing a conundrum where I have to loop over an array of nested objects (object of objects) that could have other objects and arrays. That is, the array has objects that could have other objects with arrays of objects and so on.

The data structure is for a list (like a to-do list) that could have another list and that other list could have another list and so on:

 [
      "Buy milk",
      { //<----------------- item 2 is is an object that represents sub-items

        itemName: "Buy Meat", //<------------ name of item 2 on list
        subList: [ //<------ sub-items with an item of items
          "Beef", 
          {
            itemName: "Fish",
            subList: ["Tilapia", "Catfish", "Monkfish", "Halibut"]
          } ,
          "Chicken",
        ],
      },
      "Buy cooking oil",
      "Buy baking soda",
      { //<------------------- item 6 is an object that represents sub-items (sub-todo)
        itemName: "Buy Vegetable", //<------------ name of item 6 on list
        itemList: ["Cabbage", "Carrot", "Tomatoe", "Lettuce"] //<------ sub-items
      },
      "Buy bread"
    ]

How do I loop over a data structure like this? Also, is there a better way to represent such a list?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You are asking two questions: first the structure,

The structure of the nested object should be consistent, so the question is how can you create a nested object where parents and child have the same structure.

It is not necessary to store the object in the same way as you view it in screen.

class MyList {
  constructor(itemName, subList) {
    this.itemName = itemName;
    this.subList = subList; // is always of Type MyList []
  }
}

With this structure, if SubList is not defined, its a simple string.

class MyList {
  constructor(itemName, subList) {
    this.itemName = itemName; // is name of list or individual item
    this.subList = subList; // is always of Type MyList [] or undefined
  }
}

let list = new MyList('Buy Meat', []); // ur sublist of buyMeat
list.subList.push(new MyList('beaf'));

let fishList = new MyList('fish', []); // sublist
fishList.subList.push(new MyList('Tilapia'));
fishList.subList.push(new MyList('Catfish'));
fishList.subList.push(new MyList('Monkfish'));
fishList.subList.push(new MyList('Halibut'));
list.subList.push(fishList);

list.subList.push(new MyList('chicken'));

console.log(list);
How to loop over, Now if you follow this structure you will notice that every MyList can be seen as a node. And you can use any tree traversal method to access all the elements. This can be done any way you want. The below example is just reading depth-first approach traversal of a tree.

class MyList {
  constructor(itemName, subList) {
    this.itemName = itemName; // is name of list or individual item
    this.subList = subList; // is always of Type MyList [] or undefined
  }
}

let list = new MyList('Buy Meat', []); // ur sublist of buyMeat
list.subList.push(new MyList('beaf'));

let fishList = new MyList('fish', []); // sublist
fishList.subList.push(new MyList('Tilapia'));
fishList.subList.push(new MyList('Catfish'));
fishList.subList.push(new MyList('Monkfish'));
fishList.subList.push(new MyList('Halibut'));
list.subList.push(fishList);

list.subList.push(new MyList('chicken'));

// Example reading all item name:
reader = (node) => node.subList ?  node.subList.map(reader).flat() : [node.itemName] 


console.log(reader(list))

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda