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

186
Visualizações
I want to create an object from an array which has subarray also

This is my input:

const arr =  [10,20,[40,50,60],70,80,[90,100],111,112];

output what I want:

{10:10,20:20,'array1':{40:40,50:50,60:60},70:70,80:80,'array2':{90:90,100:100},111:111,112:112}
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

my approach using Array.prototype.reduce(). only handles 1 level nested array.

const arr =  [10,20,[40,50,60],70,80,[90,100],111,112];
let count=1;

let a = arr.reduce((acc,curr) => {

    if(Array.isArray(curr)){
    let b = curr.reduce((acc1,curr1)=> {
        acc1[curr1] = curr1;
      return acc1
    },{})
    acc[`array${count}`] = b;
    count+=1;
  }
  else{
    acc[curr] = curr;
  }
 
  return acc;

},{})

console.log(a)

Since it is an object it necessarily doesn't have to be in the order you have given.

about 4 years ago · Juan Pablo Isaza Relatório

0

Here a recursive solution with reduce(), which also works for deeper nested arrays if you need that.

function foo(array){
    let arrCounter=0;
    return array.reduce((acc,curr)=>{
        if(!Array.isArray(curr)) acc[curr]=curr
        else{ arrCounter+=1;
            acc[`array${arrCounter}`]=foo(curr)        
        }
        return acc;
    },{})
} 

const arr =  [10,20,[40,50,60],70,80,[90,100],111,112];
console.log(foo(arr));

const deepArr =  [10,20,[40,50,60],70,80,[90,100,[40,50,60]],111,112];
console.log(foo(deepArr));

about 4 years ago · Juan Pablo Isaza Relatório

0

Simply loop through the array, formatting a new object as you go:

let array_count = 1;
let obj = {}

arr.forEach((el) => {
  if(Number.isInteger(el)){
    obj[el] = el;
  } else {
    inline_obj = {}
    el.forEach((e2) => inline_obj[e2] = e2);
    obj[`array${array_count}`] = inline_obj;
    array_count += 1;
  }
})
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