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

170
Vistas
Cree una matriz de objetos basada en el primer valor como clave y el segundo valor como valor en javascript

Ejemplo de entrada:

 [{'size': '56 X 56 X 190', 'no_of_ups': 5}, {'size': '65 X 55 X 110', 'no_of_ups': 2}]

Salida correspondiente:

 [{'56 X 56 X 190': 5}, {'65 X 55 X 110': 2}]

¿Cómo creamos una matriz de Objeto a partir de la matriz de entrada de Objeto que tiene un número fijo de claves y creamos una nueva matriz de Objeto que tiene un valor determinado de clave como clave y un valor determinado de valor como valor de esa clave?

Básicamente, queremos transformar la matriz de entrada de Object en el valor de 'size' como clave y el valor de 'no_of_ups' como valor.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

(Si el orden de los argumentos parece extraño, es porque asumo [módulo lodash/fp ] Esta es la función que desea ejecutar en su argumento:

 f = _.compose(_.spread(_.zipObject), _.unzip, _.map(_.over(['size', 'no_of_ups'])));

Y aquí está en acción:

 arr = [{'size': '56 X 56 X 190', 'no_of_ups': 5}, {'size': '65 X 55 X 110', 'no_of_ups': 2}]; f = _.compose(_.spread(_.zipObject), _.unzip, _.map(_.over(['size', 'no_of_ups']))); console.log(f(arr))
 <script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>

Y aquí hay un poco de explicación:

  • _.map(_.over(['size', 'no_of_ups'])) ejecuta _.over(['size', 'no_of_ups']) en cada elemento,
    • y _.over(['size', 'no_of_ups']) simplemente elige 'size' y 'no_of_ups' del elemento y coloca los dos resultados en una matriz), por lo que obtiene una matriz de matrices, en este caso [["56 X 56 X 190", 5], ["65 X 55 X 110", 2]] ;
  • luego _.unzip transpone fundamentalmente la matriz de matrices, en este caso le da [["56 X 56 X 190", "65 X 55 X 110"], [5, 2]]
  • finalmente _.spread(_.zipObject) alimenta los dos arreglos internos como argumentos separados por comas a _.zipObject , que construye objetos a partir de los dos arreglos, usándolos como el arreglo de claves y el arreglo de valores, brindándole así el resultado final resultado.

Si realmente desea una matriz de objetos en lugar de un solo objeto, puede cambiar _.zipObject por _.zipWith((x,y) => ({[x]: y})) .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Input - [{'size': '56 X 56 X 190', 'no_of_ups': 5}, {'size': '65 X 55 X 110', 'no_of_ups': 2}] Input.forEach((val)=>{ j= {}; j[val[size]]=val[no_of_ups]; Output.push(j) })

;

about 4 years ago · Juan Pablo Isaza Denunciar

0

Una de las formas más legibles de hacer esto probablemente sería en JavaScript normal.

 const output = input.map(({ size, no_of_ups }) => ({ [size]: no_of_ups }));

La expresión ({ size, no_of_ups }) => ({ [size]: no_of_ups }) puede ser un poco confusa, pero es solo una función de flecha normal.

({ size, no_of_ups }) define los argumentos. En este escenario, un solo objeto que desestructuraremos en size y no_of_ups .

({ [size]: no_of_ups }) es el valor de retorno de la función de flecha. Usaremos un nombre de propiedad calculado para establecer dinámicamente el valor de la clave y asignarle el valor de no_of_ups . La razón por la que el objeto está entre paréntesis es para decirle a JavaScript que estamos evaluando una expresión. Sin ellos, el motor de JavaScript asume que sigue un bloque de código.

 input.map(({ size, no_of_ups }) => { // <- without parentheses is assumed to be a codeblock return { [size]: no_of_ups }; });
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