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

147
Vistas
Realice operaciones matemáticas en dos objetos en Javascript sin seleccionar las claves detalladas

Tengo dos objetos, como a continuación:

 var origin = { x: 10, y: 10 } var coordinates = { x: 5, y: 5 }

Calculo el delta de la siguiente manera:

 var delta = { x : origin.x - coordinates.x, y : origin.y - coordinates.y }

Esto funciona, PERO estoy buscando una forma más elegante, dado que todo lo que realmente hago es coordenadas de origen . Desafortunadamente, origen - coordenadas no es un javascript válido

¿Alguna sugerencia? ¿Quizás usando un ... operador de propagación?

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

0

La respuesta básica es: No, no hay una manera de hacer eso que pueda pasar su prueba de "elegancia". :-) (Me gusta el enfoque de Sairyu de crear una función reutilizable [quizás con un nombre más corto]. O incluso podría convertirla en una clase Point con add , sub , etc.)

"Elegante" es un juicio de valor, pero si estas son las únicas propiedades en los objetos y desea evitar escribir explícitamente x e y , puede usar un bucle for..in , un bucle for..of en Object.keys , o una combinación de Object.entries , map y Object.fromEntries aunque la sobrecarga en este último comienza a parecer un poco exagerada.

 const delta = {}; for (const key in origin) { delta[key] = origin[key] - coordinates[key]; }

o

 const delta = {}; for (const key of Object.keys(origin)) { delta[key] = origin[key] - coordinates[key]; }

o

 const delta = Object.fromEntries( Object.entries(origin).map( ([key, value]) => [key, value - coordinates[key]] ) );

Pero de nuevo: es probable que ninguno de estos sea "elegante" según la mayoría de las definiciones que puedo imaginar. :-)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Quizás la mejor manera es haciendo una función, algo como esto:

 function calculate_coordinates(point1, point2) { const x = point1.x - point2.x; const y = point1.y - point2.y; return {x, y}; }
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