簡體   English   中英

按另一個對象的值過濾對象數組

[英]Filter array of objects by another object's values

我想根據另一個 object 中的值過濾對象數組。 我正在嘗試在 function 中map()數組和filter() ,以便我能夠獲得一個只有所需(活動)字段的新數組。

我正在嘗試獲取Object.entries()上的過濾器,我嘗試比較鍵並檢查有源過濾器的值是否為true ,但我沒有做對。

 const records = [ { id: 1, name: "first", date: "05/02" }, { id: 2, name: "second", date: "06/02" }, { id: 3, name: "third", date: "07/02" }, { id: 4, name: "fourth", date: "08/02" } ]; const active = { id: true, name: false, date: true }; const result = records.map((record) => { return Object.entries(record).filter((entry) => { Object.entries(active).forEach((activeEntry) => { return activeEntry[1] && activeEntry[0] === entry[0]; }); }); }); console.log(result);

這是期望的結果

const desiredOutcome = [
  {
    id: 1,
    date: "05/02"
  },
  {
    id: 2,
    date: "06/02"
  },
  {
    id: 3,
    date: "07/02"
  },
  {
    id: 4,
    date: "08/02"
  }
];

您可以過濾 object 的條目並將其轉換回 object 與Object.fromEntries

 const records=[{id:1,name:"first",date:"05/02"},{id:2,name:"second",date:"06/02"},{id:3,name:"third",date:"07/02"},{id:4,name:"fourth",date:"08/02"}]; const active = { id: true, name: false, date: true }; const res = records.map(x => Object.fromEntries( Object.entries(x).filter(([k])=>active[k]))); console.log(res);

只需按現有密鑰過濾密鑰,然后使用Object.fromEntries到 go 回到 object

 const records = [ { id: 1, name: "first", date: "05/02" }, { id: 2, name: "second", date: "06/02" }, { id: 3, name: "third", date: "07/02" }, { id: 4, name: "fourth", date: "08/02" } ]; const active = { id: true, name: false, date: true }; const result = records.map((record) => { return Object.fromEntries( Object.entries(record).filter(([key,value]) => active[key])); }); console.log(result);

暫無
暫無

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

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