簡體   English   中英

將值數組與另一個對象匹配

[英]match array of value with another object

我是新來的,我有一個如下的對象數組,

arr1 = {
    "ID": "sss",
    "Name": "Ven"
    "Main": [
        {"ID": "asds-vg45"},
        {"ID": "rrra-2e82"}
    ]
}

以及另一個值對象,如下所示,

obj1 = {
    "AID": "ssasas222",
    "Main": {
    "asds-vg45" : {
        "NAME" : "Item1",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "ya29.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    },
    "rrra-2e82" : {
        "NAME" : "Item2",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "yas9.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    },
    "t655e-2e82" : {
        "NAME" : "Item2",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "yas9.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    }
}

現在,我想為它提供一個新的對象,其中包括與“ arr1”和“ obj1”中的“ ID”匹配的“ Main”對象的obj1中所有匹配的值,這里匹配的ID就是其中的一個兩者都通用的“ Main”數組,我嘗試獲取的輸出如下所示,

main_obj = {
    "ID": "sss",
    "Name": "Ven",
    "AID": "ssasas222"
    "Main": {
        "asds-vg45" : {
            "NAME" : "Item1",
            "STML" : {
                "MIKE" : {
                    "bearer" : {
                        "token" : "ya29.Gl0kBoYJD"
                    },
                    "STA" : true
                }
            },
            "STATUS" : true
        },
        "rrra-2e82" : {
            "NAME" : "Item2",
            "STML" : {
                "MIKE" : {
                    "bearer" : {
                        "token" : "yas9.Gl0kBoYJD"
                    },
                    "STA" : true
                }
            },
            "STATUS" : true
        }
    }
}

您應該可以通過reduce來做到這一點:

const matches = arr1.Main
  .reduce((acc, cur) => {
    if (obj1.Main[cur.ID]) {
      acc[cur.ID]: obj1.Main[cur.ID]
    }
    return acc
  }, {})

const mainObj = {
  ID: arr1.ID,
  Name: arr1.Name,
  AID: obj1.AID,
  Main: matches
}

您只需遍歷ID數組並使用匹配的鍵構建一個新對象acc

您可以將鍵和給定數據的對象映射為新對象。

 var data = { AID: "ssasas222", Main: { "asds-vg45": { NAME: "Item1", STML: { MIKE: { bearer: { token: "ya29.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "rrra-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "t655e-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true } } }, filter = { ID: "sss", Name: "Ven", Main: [{ ID: "asds-vg45" }, { ID: "rrra-2e82" }] }, result = Object.assign( {}, data, { Main: Object.assign(...filter.Main.map(({ ID }) => ({ [ID]: data.Main[ID] }))) } ); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

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

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