Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

374
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda