1

while practicing object destructuring ; I faced some problems.

I have a object like this:

const secondObject = {
    value : 2,
    credit: 23, 
    details: {
        serialNumber : 4
    }
}

Now I want to get 'serialNumber' value inside a function parameter. so I invoke a function like this :

function output({value, details}){
    console.log(`value: ${value} , detail: ${details}`);
}
output(secondObject);

when I log it into console the result showing : detail: [object Object]

*but if I do like this ,I got the serialNumber's value : *

 const {details: {serialNumber}} =  secondObject;
console.log(serialNumber);

can anyone tell me how can I get the value inside a function?

Arijit Maiti
  • 99
  • 2
  • 8
  • 4
    You can use the same idea you used for your variable but in your argument: `{value, details: {serialNumber}}` – Nick Parsons Oct 14 '21 at 11:45
  • You may want to read https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment – tevemadar Oct 14 '21 at 17:14

1 Answers1

3

If you want to get a specific attribute inside details, then you can directly access it:

function output({value, details}){
    console.log(`value: ${value} , detail: ${details.serialNumber}`);
}

or equivalently, as suggested by Nick Parsons in the comments:

function output({value, details: {serialNumber}}){
    console.log(`value: ${value} , detail: ${serialNumber}`);
}

If instead you want to show the full object contained in details, then you can use JSON.stringify, as explained here. Have a look at this piece of code.

const secondObject = {
    value : 2,
    credit: 23, 
    details: {
        serialNumber : 4,
        fooBar: 42
    }
}

function output({value, details}){
    str = JSON.stringify(details);
    console.log(`value: ${value} , detail: ${str}`);
}

output(secondObject);
// value: 2 , detail: {"serialNumber":4,"fooBar":42}
scandav
  • 749
  • 1
  • 7
  • 21