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

262
Visualizações
Combine objects in an array of objects in Typescript?

i am having trouble combining objects from an array of Objects in typescript.

the Array looks like that:

0: {type: 'FeatureCollection', features: Array(134)}
1: {type: 'FeatureCollection', features: Array(109)}

what i need is an object (no array) with all "features" combined - so that it looks like this:

{type: 'FeatureCollection', features: Array(243)}

i am very new to typescript so sorry for that probably easy question...

Thank you so much!!

EDIT: maybe the question was not too good to understand. Hope this helps: Array(134) means there are 134 Objects inside. this does what i need manually when the array of objects (collection) is 2 long:

  const result = [...collection[0].features, ...collection[1].features];
  const resultCollection: FeatureCollection = collection[0];
  resultCollection.features = result;

i need to make this work for any length of collection.

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

0

Are you looking for something like this? You'll need to add types, but you can merge the features arrays from all entries in the data array using vanilla JS methods.

  1. Create the output object and specify its type.
  2. Use Array#filter to select the entries in data with the matching type.
  3. Use Array#flatMap to select the features array from each of the entries above and project their contents into a single array.

const data = [
  { type: 'FeatureCollection', features: [1, 2, 3] },
  { type: 'FeatureCollection', features: [4, 5, 6] }
];

const output = { 
  type: 'FeatureCollection',
  features: data
    .filter(obj => obj.type === 'FeatureCollection')
    .flatMap(obj => obj.features) 
};
  
console.dir(output);

about 4 years ago · Juan Pablo Isaza Relatório

0

With the reduce function :

const array = [
  {type: 'FeatureCollection', features: [1, 2, 3]},
  {type: 'FeatureCollection', features: [4, 5, 6]},
  {type: 'Test', features: [4, 5, 6]}
]

const merged = array.reduce((array, item) => {
  const found = array.find((i) => i.type === item.type);
  if (found) {
    found.features.push(...item.features);
  } else {
    array.push(item);
  }
  return array;
}, []);

console.log(merged);

---- EDITED ----

option 2 :

const array = [
  {type: 'FeatureCollection', features: [1, 2, 3]},
  {type: 'FeatureCollection', features: [4, 5, 6]},
  {type: 'Test', features: [4, 5, 6]}
]

const merged = array.reduce((obj, item) => {
  if (obj[item.type]) {
    obj[item.type].push(...item.features);
  } else {
    obj[item.type] = item.features;
  }
  return obj;
}, {} as {[key: string]: number[]});

const keys = Object.keys(merged);
const result = keys.map((k) => ({type: k, features: merged[k]}));

console.log(result);
about 4 years ago · Juan Pablo Isaza Relatório

0

Just use a simple Array.prototype.reduce function and the spread operator

const original = [
  { type: "banana", features: ["34", "wow", "hotdog"] },
  { type: "banana", features: ["dog", "cat", "recursion"] },
];

const compress = (original) => original.reduce((acc, cur) => {
  acc.features = [...(acc.features ?? []), ...cur.features];
  return acc;
}, { type: (original[0].type) });

console.log(compress(original));

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