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

302
Views
cómo ordenar matrices ignorando valores nulos en java script
initialArray = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8 ]; // all eight are uniq objects filterdArray = [ obj2, obj5, obj6, obj8 ]; // varies from 0 to 8 varOrder = [ 6, 8, 3, 2, 1, 4, 5, 7 ]

Tengo un varOrder como entrada, que es del 1 al 8. Siempre es del 1 al 8 pero en un orden diferente según el deseo del usuario.

Inicialmente el Array tiene Obj1 a Obj8, pero después del filtro, el Array puede o no tener elementos, si tiene elementos, varía de 1 a 8.

lo que busco es si

 filterdArray = [ obj2, obj5, obj6, obj8 ]; // and my varOrder is varOrder = [ 6, 8, 3, 2, 1, 4, 5, 7 ]; // required ouput is like below FinalObjects = [ obj6, obj8, obj2, obj5 ]

En simple, de 8 en el orden dado por el usuario, si algunos objetos no están disponibles, salte al siguiente objeto.

El razonamiento para FinalObjects = [ obj6, obj8, obj2, obj5 ] es

 varOrder | FilteredArray 6 | obj6 available from FilterdArray (obj6) 8 | obj8 available from FilteredArray (obj8) 3 | obj3 is not available from FilteredArray 2 | obj2 is available from FilteredArray (obj2) 1 | obj1 is not available from FilteredArray 4 | obj4 is not available from FilteredArray 5 | obj5 is available from FilteredArray (obj5) 7 | obj7 is not availabe from FilteredArray

Por lo tanto FinalObjects = [ obj6, obj8, obj2, obj5 ]

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Primero realice el mapeo, luego filtre.

 const varOrder = [ 6, 8, 3, 2, 1, 4, 5, 7 ]; const initialArray = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8 ]; const orderedArray = varOrder.map((idx) => initialArray[idx - 1]); // [ obj6, obj8, obj3, obj2, obj1, obj4, obj5, obj7 ] const filteredArray = orderedArray.filter(obj => obj !== null); // Assume all objects are null except for 6, 8, 2, and 5. // [ obj6, obj8, obj2, obj5 ]
about 4 years ago · Juan Pablo Isaza Report

0

Puede utilizar este enfoque:

Primero, asignamos cada elemento de filterdArray a un índice de order , ya que esta es una operación costosa y no queremos ejecutarla cada vez que reorganizamos la matriz.

Luego ordenamos la matriz mapped por el índice de order .

Finalmente, devolvemos los objetos originales.

 const initialArray = [{n:'obj1'}, {n:'obj2'}, {n:'obj3'}, {n:'obj4'}, {n:'obj5'}, {n:'obj6'}, {n:'obj7'}, {n:'obj8'}]; const filterdArray = [{n:'obj2'}, {n:'obj5'}, {n:'obj6'}, {n:'obj8'}]; const order = [ 6, 8, 3, 2, 1, 4, 5, 7 ]; const mapped = filterdArray.map((obj) => ( { obj, order: order.at(initialArray.findIndex((item)=> item.n === obj.n)) })); console.log('mapped >>', mapped); const sortedByOrder = mapped .sort((o1, o2) => o1.order - o2.order) .map(({obj}) => obj); console.log('sortedByOrder >>', sortedByOrder);
 .as-console-wrapper {max-height: 100% !important; top: 0}

about 4 years ago · Juan Pablo Isaza Report

0

Espero que este sea el resultado esperado. acaba de usar un bucle for

 let obj1 = {name: 'obj1'};let obj2 = {name: 'obj2'};let obj3 = {name: 'obj3'};let obj4 = {name: 'obj4'};let obj5 = {name: 'obj5'};let obj6 = {name: 'obj6'};let obj7 = {name: 'obj7'};let obj8 = {name: 'obj8'} initialArray = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8 ]; // all eight are uniq objects filterdArray = [ obj2, obj5, obj6, obj8 ]; // varies from 0 to 8 varOrder1 = [ 6, 3, 8, 2, 1, 4, 5, 7 ]; varOrder2 = [ 7, 5, 4, 1, 2, 8, 3, 6 ]; let finalArr1 = []; let finalArr2 = []; const sorter = (varOrder) => { let finalArr = [] for (let i = 0; i < varOrder.length; i++) { if (filterdArray.includes(initialArray[varOrder[i]-1])){ finalArr.push(initialArray[varOrder[i]-1]) } } return finalArr; } console.log(sorter(varOrder1)) console.log(sorter(varOrder2))
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza 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!