Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

297
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!