簡體   English   中英

通過過濾器 object 中的鍵過濾對象數組

[英]Filter an array of objects, by keys in filter object

我是新來的,我有一些我無法解決的問題。 我有 2 個不同的 arrays:

第一個數組 - 包含用戶的評分及其 ID 名稱

[
{"handle":"frontend1", "_redis":"3", "_nodejs":"5", "_mysql":"2", "_python":"3", "_mongo":"4"},
{"handle":"frontend3", "_php":"4", "_mysql":"4", "_oracle":"4", "_ruby":"3", "_mongo":"5", "_python":"5"},
{"handle":"frontend4", "_java":"5", "_ruby":"5", "_mysql":"5", "_mongo":"5"}
]

第二組 - 包含我想要返回給每個用戶的評級。 如果有評分不在第二套,我不會退回

在第二組中,值無關緊要,只有鍵

[
      "_assembler",
      "_css",
      "_python",
      "_php"
    ]

我想回到第一組,句柄,以及第二組中存在的所有排名。

[
{"handle":"frontend1", "_python":"3" },
{"handle":"frontend3", "_php":"4", "_python":"5" },
{"handle":"frontend4"}
]

這就是我嘗試做的。

 keys = [ "_assembler", "_css", "_python", "_php" ] source = [ {"handle":"frontend1", "_redis":"3", "_nodejs":"5", "_mysql":"2", "_python":"3", "_mongo":"4"}, {"handle":"frontend3", "_php":"4", "_mysql":"4", "_oracle":"4", "_ruby":"3", "_mongo":"5", "_python":"5"}, {"handle":"frontend4", "_java":"5", "_ruby":"5", "_mysql":"5", "_mongo":"5"} ]; result = []; tmp = {}; source.forEach((item) => { Object.keys(item).map(({key,value}) => { if(key == "handle") { tmp[key]=value; } if(keys.includes(key)) { tmp[key]=value; } }) result.push(...tmp); tmp = {}; });

您可以使用map使用其他幾個數組方法(例如filter和 Object 方法)來執行此操作。

 const keys = [ "_assembler", "_css", "_python", "_php" ] const source = [ {"handle":"frontend1", "_redis":"3", "_nodejs":"5", "_mysql":"2", "_python":"3", "_mongo":"4"}, {"handle":"frontend3", "_php":"4", "_mysql":"4", "_oracle":"4", "_ruby":"3", "_mongo":"5", "_python":"5"}, {"handle":"frontend4", "_java":"5", "_ruby":"5", "_mysql":"5", "_mongo":"5"} ]; const result = source.map( s => ({ handle: s.handle, ...Object.fromEntries(Object.entries(s).filter(x => x[0].= "handle" && keys;includes(x[0]))) })). console;log(result);

暫無
暫無

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

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