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

140
Visualizações
Object that contains an array of arrays, how to remove object so it's only an array of arrays

I have an object that contains an array of arrays. I would like to remove the object so it's only an array of arrays. Is there a way in JavaScript to do this or am I out of luck? I'm using Puppeteer to scrape a page and return all the text after mapping through a set of elements. I've already written a function to seprate it into the arrays I want but Puppeteer returns it as an object which I don't want. The object it returns looks like this

UPDATE

Turns out it's returning a promise which is an object. So the result that I get when I log to the console is

Promise {
    [ [], [], []... ]
}

So I guess my new question is how do I get only the result of the promise.

data = {
  [
    [], [], []...
  ]
}; 

I would like it to look like

data = [
  [], [], []...
]

Puppeteer function

const getText = async (data) => {
    const browser = await puppeteer.launch({ headless: true })
    const page = await browser.newPage()
    await page.goto(data.URL, { waitUntil: 'networkidle2' });
    const options = await page.$$eval('table[class="data-table"] > tbody > tr > td', (options) =>
        options.map((option) => option.textContent)
    );    
    await browser.close();
    const finalData = createGroups(options, 228);
    // the puppeteer function returns each texContent as a single array, meaning the page 
    // I'm scraping returns 1140 arrays, I want each array in my final product to contain 5 
    // elements so I did 1140/5, that's how I got 228
    console.log(finalData);
}

createGroups function

const createGroups = async (arr, numGroups) => {
    const perGroup = Math.ceil(arr.length / numGroups);
    const finalArr = new Array(numGroups)
      .fill('')
      .map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
    return finalArr;
}

Or is there is a way to just extract that large array which contains the smaller arrays and put that into it's own variable? The way to do it with arrays would be LargeArray[0] but I don't know how to do that with objects.

Thanks

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

0

The reason that you are getting a Promise returned is that your createGroups is async (without a need to be), and the return type of an async function is always a Promise.

The best way is to just change it to not be async

const createGroups = (arr, numGroups) => { // rest of code

If for whatever reason, you don't want to do this, you can just await it in your main method.

const finalData = await createGroups(options, 228);

In almost every circumstance I can think of, the only times you should use async are:

  • You're using await somewhere in the method
  • You're passing the function as a callback to another function, which expects the callback to return a Promise and you don't want to create the Promise manually
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