Estoy tratando de difundir un objeto para usarlo como parámetro de una función. Estoy bastante seguro de que he visto hacer esto, pero no puedo recordar cómo. Sé cómo hacer esto con una matriz, pero necesito hacerlo con un objeto. Además, no puedo simplemente convertir el objeto en una matriz usando Object.values(obj) ya que en algunos casos el orden de los valores no coincidirá con el orden de los parámetros.
function sum(x, y, z) { return x + y + z } obj = {x: 23, y: 52, z: 12} sum(...obj) // <--- WHAT DO I PUT HERE?Usando una matriz, simplemente haría:
function sum(x, y, z) { return x + y + z } arr = [23, 52, 12] sum(...arr)En python, esto sería:
def sum(x, y, z): return x + y + z dict = {'x': 23, 'y': 52, 'z': 12} sum(**dict)Además, no puedo simplemente convertir el objeto en una matriz usando Object.values(obj) ya que en algunos casos el orden de los valores no coincidirá con el orden de los parámetros.
Si este es el caso, entonces no hay forma de hacerlo sin enumerar de alguna manera el orden de propiedad deseado o cambiando la firma de la función.
function sum(x, y, z) { return x + y + z } // while this works, it's quite unusual - I don't recommend it sum.params = ['x', 'y', 'z']; const obj = {x: 23, y: 52, z: 12} console.log(sum(...sum.params.map(param => obj[param]))); function sum({ x, y, z }) { return x + y + z } const obj = {x: 23, y: 52, z: 12} console.log(sum(obj));Puede capturar campos de objetos por nombre como se muestra a continuación
function sum({x,y}) { console.log(x + y); } obj = { x: 5, y: 10 } sum(obj) // output: 15