1

I need a help to add new attribute in the existing object. In my original object if product-metadata attribute exist - then I'm adding new two additional properties prodLocation and prodTime in the existing product-metadata attribute.

If my original object doesn't contain product-metadata attribute - then I've to add product-metadata attribute with these two properties prodLocation and prodTime.

I was able to add new two properties if existing object contain product-metadata attribute but I'm having an issue when original object come without product-metadata attribute.

Can someone please help how can I add new attribute in the existing object? Appreciated your help in advance. Thanks!

Please find my code below:

function updateProduct(obj) {

    const prodLocation = {
        key: 'location',
        value: 'US'
    };

    const prodTime = {
        key: 'time',
        value: '2019-01-01T00:00:00.000Z'
    };

    if (obj.hasOwnProperty('product-metadata')) {
        const prodtMetadata = existObj['product-metadata'];
        prodtMetadata.push(prodLocation);
        prodtMetadata.push(prodTime);
        obj['product-metadata'] = prodtMetadata;
        console.log(obj);
    } else {
        console.log("no metadata");
        var metaObj = {
            'product-metadata':
                [prodLocation, prodTime]
        }
        var newArr = [obj];
        newArr.push(metaObj);
        const finalJson = JSON.stringify(newArr);
        console.log(finalJson);

    }

}

var objWithMetadata = {
    "prodVersion": "0.3",
    "prodName": "test-product",
    "prodType": "electronics",
    "id": "7b966d7e-9671-45a7-9ed3-9877f26793f9",
    "product-info": {
        "price": "2323.4"
    },
    "productDesc": "test description",
    "product-metadata": [
        {
            "key": "key-1",
            "value": "value-1"
        }
    ]
};

var objWithoutMetadata = {
    "prodVersion": "0.3",
    "prodName": "test-product",
    "prodType": "electronics",
    "id": "7b966d7e-9671-45a7-9ed3-9877f26793f9",
    "product-info": {
        "price": "2323.4"
    },
    "productDesc": "test description"
};

updateProduct(objWithoutMetadata);

Expected Output:

{
    "prodVersion": "0.3",
    "prodName": "test-product",
    "prodType": "electronics",
    "id": "7b966d7e-9671-45a7-9ed3-9877f26793f9",
    "product-info": {
        "price": "2323.4"
    },
    "productDesc": "test description",
    "product-metadata": [
        {
            "key": "location",
            "value": "US"
        },
        {
            "key": "time",
            "value": "2019-01-01T00:00:00.000Z"
        }
    ]
}
0

1 Answer 1

2

This will add your needed property to your current object when not found:

obj["product-metadata"] = [prodLocation, prodTime];
const finalJson = JSON.stringify(obj);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.