Search code examples
javascriptecmascript-6destructuring

Is it possible to destructure onto an existing object? (JavaScript ES6)


For example, if I have two objects:

var foo = {
  x: "bar",
  y: "baz"
}

and

var oof = {}

and I wanted to transfer the x and y values from foo to oof. Is there a way to do that using the ES6 destructuring syntax?

Perhaps something like:

oof{x,y} = foo

Solution

  • While ugly and a bit repetitive, you can do

    ({x: oof.x, y: oof.y} = foo);
    

    which will read the two values of the foo object, and write them to their respective locations on the oof object.

    Personally I'd still rather read

    oof.x = foo.x;
    oof.y = foo.y;
    

    or

    ['x', 'y'].forEach(prop => oof[prop] = foo[prop]);
    

    though.