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

317
Visualizações
JavaScript aplanando una matriz de matrices de objetos

Tengo una matriz que contiene varias matrices, cada una con varios objetos, similar a esta.

 [[object1, object2],[object1],[object1,object2,object3]]

Aquí hay una captura de pantalla del objeto registrado en la consola.

¿Cuál sería el mejor enfoque para aplanar esto para que sea solo una matriz de objetos?

He intentado esto sin suerte:

 console.log(searchData); var m = [].concat.apply([],searchData); console.log(m);

searchData cierra la sesión de la captura de pantalla anterior, pero m cierra la sesión [ ]

Aquí está el contenido real de searchData:

 [[{"_id":"55064111d06b96d974937a6f","title":"Generic Title","shortname":"generic-title","contents":"<p>The Healing Center offers practical, social, and spiritual support to individuals and families. Services include, but are not limited to: food and clothing, job skills training and job search assistance, auto repair (Saturdays only), mentoring, financial counseling, tutoring, prayer, life skills training, and helpful information about local community services.</p><p>Stay in touch with us:</p>","__v":0},{"_id":"5508e1405c621d4aad2d2969","title":"test english","shortname":"test-page","contents":"<h2>English Test</h2>","__v":0}],[{"_id":"550b336f33a326aaee84f883","shortname":"ok-url","title":"now english","contents":"<p>okokko</p>","category":"Transportation","__v":0}]]
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede usar Array.concat como a continuación: -

 var arr = [['object1', 'object2'],['object1'],['object1','object2','object3']]; var flattened = [].concat.apply([],arr);

flattened será su matriz esperada.

ES 2020 proporciona el flat , también flatMap si desea iterar, a listas planas de listas:

 [['object1'], ['object2']].flat() // ['object1', 'object2']
over 4 years ago · Santiago Trujillo Relatório

0

Una solución recursiva para el aplanamiento profundo (anidado):

 function flatten(a) { return Array.isArray(a) ? [].concat.apply([], a.map(flatten)) : a; }

Un poco más compacto con ES6:

 var flatten = a => Array.isArray(a) ? [].concat(...a.map(flatten)) : a;

Por diversión, usando un generador llamado F para "aplanar", para generar perezosamente valores aplanados:

 function *F(a) { if (Array.isArray(a)) for (var e of a) yield *F(e); else yield a; } >> console.log(Array.from(F([1, [2], 3]))); << [ 1, 2, 3 ]

Para aquellos que no están familiarizados con los generadores, la sintaxis yield * arroja valores de otro generador. Array.from toma un iterador (como los resultados de invocar la función de generador) y lo convierte en una matriz.

over 4 years ago · Santiago Trujillo Relatório

0

Si solo necesita aplanar simple, esto puede funcionar:

 var arr = [['object1', 'object2'],['object1'],['object1','object2','object3']]; var flatenned = arr.reduce(function(a,b){ return a.concat(b) }, []);

Para un aplanamiento más complejo, Lodash tiene la función de aplanamiento, que tal vez sea lo que necesita: https://lodash.com/docs#flatten

 //Syntax: _.flatten(array, [isDeep]) _.flatten([1, [2, 3, [4]]]); // → [1, 2, 3, [4]]; // using `isDeep` to recursive flatten _.flatten([1, [2, 3, [4]]], true); // → [1, 2, 3, 4];
over 4 years ago · Santiago Trujillo 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