Destructure object property AND whole object itself

Viewed 659

I have an object. I know I can destructure to retrieve the value of any entry, and use spread operator to retrieve the rest of them

const [a, ...rest] = [1, 2, 3];
console.log(a); // 1
console.log(rest); // [ 2, 3 ]

I would like to know if there is any sintaxis to retrieve both a value of any entry, and the object itself redeclared to a new var, something like the following —although I know is wrong—:

const [a], myArrayInANewVar = [1, 2, 3];
console.log(a); // 1
console.log(myArrayInANewVar); // [ 1, 2, 3 ]

Thanks in advance!

2 Answers

Why not take two assignments?

const myObject = {
  a: 1,
  b: 2,
};

const
    { a } = myObject,
    { ...copy } = myObject;

console.log(a);
console.log(copy);

A chained assignemnt does not work because the nested variables are created outside of the actual scope.

function ownScope() {
    const
        myObject = { a: 1, b: 2, },
        { a } = { ...copy } = myObject;

    console.log(a);
    console.log(copy);
}

ownScope();
console.log(copy); // global

const [a] = (myArrayInANewVar = [1, 2, 3]);
console.log(a); // 1
console.log(myArrayInANewVar); // [ 1, 2, 3 ]
Related