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

375
Views
¿Cómo obtener valores entre dos números en una matriz?

["10","13"] es la matriz, necesita encontrar los valores entre ellos y aplanar la matriz con los valores -> ["10","11","12","13"].

La primera matriz anterior (["10", "13"]) está en una lista de matrices.

 const OriginalData = { Red:{ Name:"L", List:[ ["1", "5"], ["2", "5"], ["7", "9" ], ] }, Blue:{ Name:"BL", List:[ ["1", "5"], ["7", "9" ], ["10", "13" ], ["15", "20"] ] }, Black:{ List:[ ["Random"], "Random2" ] } }

Entonces, finalmente, el objeto debe verse como,

 { Level:{ Name:"L", List:[ 1, 2, 3, 4, 5, 7, 8, 9 ] }, Basement:{ Name:"BL", List:[ 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20 ] }, Custom:{ List:[ "Random", "Random2" ] } }

Qué debería hacer: Tome el primer objeto, dentro de la Lista hay un conjunto de rangos, los valores entre esos rangos deben encontrarse y aplanarse sin duplicados. Encontrar los valores entre es solo para "Rojo" y "Azul". En la tecla "Negro" solo se necesita aplanar.

Lo intenté,

Código:

 const submitData = () => { let obj = originalData; let flattenedArray = [].concat.apply([], originalData.Red.List); let uniqueArray = flattenedArray.filter( (v, i, a) => a.indexOf(v) === i ); obj = { ...originalData, Red: { ...originalData.Red, List: uniqueArray, }, }; console.log(obj); };

El código anterior aplana la matriz pero no encontrará entre los números y solo funcionó para la tecla "Roja"

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

0

Un ejemplo simple para crear un rango:

 let example = ["10","13"]; let min = Math.min(...example); let max = Math.max(...example); let result = []; for (i = min; i <= max; i++) { result.push(i); } console.log(min, max, result)

about 4 years ago · Juan Pablo Isaza Report

0

Puede lograrlo fácilmente con una lógica simple y también funcionará para números aleatorios.

Pruebe esto (se agregaron comentarios descriptivos de la implementación en el siguiente fragmento de código) :

 const OriginalData = { Red:{ Name:"L", List:[ ["1", "5"], ["2", "5"], ["7", "9" ], ] }, Blue:{ Name:"BL", List:[ ["1", "5"], ["7", "9" ], ["10", "13" ], ["15", "20"] ] } }; Object.keys(OriginalData).forEach(key => { // Flatten the original array list. OriginalData[key].List = OriginalData[key].List.flat() // Find min and max numbers from the array. const min = Math.min(...OriginalData[key].List); const max = Math.max(...OriginalData[key].List); // empty existing list array. OriginalData[key].List = []; // Now using for loop assign the values to the list array based on min and max value. for (let i = min; i <= max; i++) { OriginalData[key].List.push(i); } }); // Result console.log(OriginalData);

about 4 years ago · Juan Pablo Isaza Report

0

Para crear una matriz de todos los números en un rango dado, puede crear una nueva matriz con el tamaño requerido y luego asignar cada una de sus entradas al índice de la entrada más el límite inferior dado.

 function fillRange(r) { let b = +r[1] let a = +r[0] if (a > b) { let tmp = a a = b b = tmp } return Array(b - a + 1).fill(0).map((e, i) => a + i) }

Esta función aplana una matriz y elimina todas las entradas duplicadas.

 function union(arrays) { let flattened = [].concat.apply([], arrays) return flattened.reduce( (total, e) => { let i = total.indexOf(e) if (i === -1) { total.push(e) } return total }, []) }

Entonces este código produce el resultado deseado de una lista de rangos:

 function unionRanges(ranges) { let expanded = ranges.map((e) => fillRange(e)) return union(expanded).sort((a,b) => (ab)) }

El objeto final se puede crear así:

 function processData(data) { let res = {} res.Level = {} res.Basement = {} res.Custom = {} res.Level.Name = data.Red.Name; res.Level.List = unionRanges(data.Red.List) res.Basement.Name = data.Blue.Name res.Basement.List = unionRanges(data.Blue.List) res.Custom.List = union(data.Black.List) return res }
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!