简体   繁体   English

如何在 NodeJS 中的现有 object 中添加新数组

[英]How to add new array in existing object in NodeJS

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.我需要帮助在现有的 object 中添加新属性。在我原来的 object 中,如果存在product-metadata属性 - 那么我将在现有的product-metadata属性中添加新的两个附加属性prodLocationprodTime

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 .如果我原来的 object 不包含product-metadata属性 - 那么我必须添加具有这两个属性prodLocationprodTime product-metadata属性。

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.如果现有 object 包含product-metadata属性,我可以添加新的两个属性,但当原始 object 没有product-metadata属性时,我遇到了问题。

Can someone please help how can I add new attribute in the existing object?有人可以帮助我如何在现有的 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:预计 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"
        }
    ]
}

This will add your needed property to your current object when not found:找不到时,这会将您需要的属性添加到当前的 object 中:

obj["product-metadata"] = [prodLocation, prodTime];
const finalJson = JSON.stringify(obj);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM