[英]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.