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

144
Visualizações
Reconstructing an array of arrays and turning it into an array of objects with keys as the first array and values as the rest of the array items

The question itself is probably in need of editing but hear me out pls. I have this:

[
    ["a","b","c"],
    ["apple", "orange", "banana"],
    ["kiwi", "tomato", "avocado"],
    ["beans", "asparagus", "spinach"]
]

I need it so that it will look like the one below:

[
    {"a":"apple", "b":"orange", "c":"banana"},
    {"a":"kiwi", "b":"tomato", "c":"avocado"},
    {"a":"a", "b":"asparagus", "c":"spinach"}
]

I have done something like this:

const rows = [
    ["a","b","c"],
    ["apple", "orange", "banana"],
    ["kiwi", "tomato", "avocado"],
    ["beans", "asparagus", "spinach"]
]

const dataObj = {};
const dataArr = [];

if (rows.length) {
        keys = rows[0];
        values = rows[0];

        rows.forEach((element, i) => {
          values = rows[i];
          keys.forEach((key, j) => {
            dataObj[key] = values[j];
            dataArr.push(dataObj);
          });
        });
      } 

To no avail and got something like this:

[
    {"a":"apple", "b":"orange", "c":"banana"},
    {"a":"apple", "b":"orange", "c":"banana"},
    {"a":"apple", "b":"orange", "c":"banana"}
]

This is not the desired output. If you can help me out - and our community! - it would be super. Thanks!

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

0

You can use couple of Array functions to achieve this:

  • Array.shift: To pick the first element and remove it from array
  • Array.map: To transform items into object

const rows = [
  ["a", "b", "c"],
  ["apple", "orange", "banana"],
  ["kiwi", "tomato", "avocado"],
  ["beans", "asparagus", "spinach"]
]

const keys = rows.shift();
const map = rows.map((item) => {
  const obj = {}
  keys.forEach((key, index) => {
    obj[key] = item[index]
  })
  return obj
})

console.log(map)

about 4 years ago · Juan Pablo Isaza Relatório

0

If you can use lodash: Check it out in this sandbox

import _ from 'lodash';

const input = [
  ["a","b","c"],
  ["apple", "orange", "banana"],
  ["kiwi", "tomato", "avocado"],
  ["beans", "asparagus", "spinach"]
]

const keys = input[0];
const values = input.splice(1);

console.log(keys);
console.log(values);

const output = values.map(row => _.zipObject(keys, row));
console.log(output);
/*
[
  {"a":"apple","b":"orange","c":"banana"}, 
  {"a":"kiwi","b":"tomato","c":"avocado"}, 
  {"a":"beans","b":"asparagus","c":"spinach"}
]
*/
about 4 years ago · Juan Pablo Isaza Relatório

0

Modified your code a little bit for the solution

    const rows = [
    ["a","b","c"],
    ["apple", "orange", "banana"],
    ["kiwi", "tomato", "avocado"],
    ["beans", "asparagus", "spinach"]
]

let dataObj = {};
const dataArr = [];

if (rows.length) {
    keys = rows[0];
    rows.forEach((row, i) => {
      if(i==0)
      return
      dataObj = {}
      keys.forEach((key, j) => {
        dataObj[key] = row[j];
      });
      dataArr.push(dataObj);

    });
  }
console.log(dataArr)

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