• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

195
Vistas
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}]]
about 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

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']
about 3 years ago · Santiago Trujillo Denunciar

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.

about 3 years ago · Santiago Trujillo Denunciar

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];
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda