簡體   English   中英

鑒於鍵在 Javascript 中的數組中給出,如何獲取 Json 中存在的鍵的值?

[英]How to get value of keys present in a Json given that the keys are given in an array in Javascript?

假設我有一個由 JSON 中存在的鍵組成的數組,

const keys = ['Person:name','Person:Address:zip']

假設 JSON 如下

let data = [
    {"Person":[
        {"name":"P1",
        "Address":{
            "zip":"01"}   
        },
        {"name":"P2",
        "Address":{
            "zip":"02"}
         }
        ]
    },
    {"Person":[
        {"Personname":"P3",
        "Address":{
            "zip":"03"}   
        },
        {"name":"P4",
        "Address":{
            "zipcode":"04"}
         }
        ]
    },
    {"People":[
        {"name":"P5",
        "Address":{
            "zip":"05"}   
        },
        {"name":"P6",
        "Address":{
            "zip":"06"}
         }
        ]
    },
]

基於鍵數組,我將不得不遍歷數據字典以獲取其各自的值。 對於上面的例子,結果應該是這樣的

[{"name":'P1','zip':'P1'},{"name":'P2','zip':'P2'},{"name":Null,'zip':'P3'},{"name":'P4','zip':Null}]

我已經嘗試了各種方法,例如 Javascript 中的遞歸和嵌套循環,但無法獲得這些結果。 有人可以幫忙嗎?

我將重新使用我最近的答案 當然,我最終重寫了。 無論如何,一個鍵路徑是可行的,但不清楚如何組合 2 個或更多。 這是 1 個關鍵路徑的解決方案。

 const keys = ['Person:name', 'Person:Address:zip'] let data = [{ "Person": [{ "name": "P1", "Address": { "zip": "01" } }, { "name": "P2", "Address": { "zip": "02" } } ] }, { "Person": [{ "Personname": "P3", "Address": { "zip": "03" } }, { "name": "P4", "Address": { "zipcode": "04" } } ] }, { "People": [{ "name": "P5", "Address": { "zip": "05" } }, { "name": "P6", "Address": { "zip": "06" } } ] }, ] function get_by_path(arr, arr_path) { var pointer = arr; var key = arr_path.shift(); while (arr_path.length) { var step = []; pointer.forEach(function(item) { step.push(item? (item[key]? item[key]: {}): {}) }); pointer = step.flat(); key = arr_path.shift(); } var result = pointer.map(function(item) { var obj = {} obj[key] = item? (item[key]? item[key]: null): null return obj }) return result; } keys.forEach(function(key) { var path = key.split(':'); var arr = get_by_path(data, path) console.log (arr); })
 .as-console-wrapper { max-height: 100%;important; }

暫無
暫無

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

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