簡體   English   中英

Javascript Lodash - 替換對象中的對象

[英]Javascript Lodash - replace object in object

我有一個像這樣的對象:

{
    "memory": {
        "memory1":{
            "schedule":"every day",
            "measure": [
                { "date": "date 1", "value": "10" }
            ]
        },
        "memory2": {
            "schedule":"every month",
            "measure": [
                { "date": "date 2", "value": "40" },
                { "date": "date 3", "value": "22" }
            ]
        },
        "memory3": {
            "schedule": "every day",
            "measure": []
        }
    },
    "loads": {
        "load1": {
            "schedule":"every day",
            "measure": [
                { "date": "date 4", "value": "40" }
            ]
        }
    }
}

給定一個名稱 (在此對象中是memoryloads )和一個類型 (在此對象中是memory1memory2memory2用於內存load1用於加載

我需要添加另一個對象來測量元素,搜索他的名字和類型。

例如,給定內存memory2作為變量值和一個對象{ "date": "date 1", "value": "10" } ,我將需要連接它來測量第二個元素(即memory2)第一棵樹就是記憶。

我還需要維護“measure”數組不超過10個元素(FIFO策略),但這是另一個故事....

現在我用新措施創建了一個新對象,但如何在正確的樹位“替換”或“連接”它?

結果應該是:

{
    "memory": {
        "memory1":{
            "schedule":"every day",
            "measure": [
                { "date": "date 1", "value": "10" }
            ]
        },
        "memory2": {
            "schedule":"every month",
            "measure": [
                { "date": "date 2", "value": "40" },
                { "date": "date 3", "value": "22" },
                { "date": "date 3", "value": "22" }  THIS IS THE ELEMENT TO ADD
            ]
        },
        "memory3": {
            "schedule": "every day",
            "measure": []
        }
    },
    "loads": {
        "load1": {
            "schedule":"every day",
            "measure": [
                { "date": "date 4", "value": "40" }
            ]
        }
    }
}

為了動態訪問和修改嵌套對象屬性值,您可以使用Object.prototype.getNestedValue()類的Object方法。它按Object.prototype.getNestedValue()將一系列字符串或整數作為參數(對象屬性的字符串和數組索引的整數)它們是如何嵌套的。 讓我們來看看...

 Object.prototype.getNestedValue = function(...a) { return a.length > 1 ? (this[a[0]] !== void 0 && this[a[0]].getNestedValue(...a.slice(1))) : this[a[0]]; }; var data = { "memory": { "memory1":{ "schedule":"every day", "measure": [ { "date": "date 1", "value": "10" } ] }, "memory2": { "schedule":"every month", "measure": [ { "date": "date 2", "value": "40" }, { "date": "date 3", "value": "22" } ] }, "memory3": { "schedule": "every day", "measure": [] } }, "loads": { "load1": { "schedule":"every day", "measure": [ { "date": "date 4", "value": "40" } ] } } }, newMeasureData = { "date": "date 3", "value": "22" }; data.getNestedValue("memory","memory2","measure").push(newMeasureData); console.log(JSON.stringify(data,null,2)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM