基于值js过滤对象的对象

lil*_*ilo 0 javascript

我有这个对象对象,我正在尝试获取包含社交内容的项目

const events = {
    'event-1': { id: 'event-1', channel: 'facebook'},
    'event-2': { id: 'event-2', channel: 'twitter'},
    'event-3': { id: 'event-3', channel: 'slack'},
  };
Run Code Online (Sandbox Code Playgroud)

我需要获得例如具有facebook和松弛的事件任何想法过滤器如何javascript处理对象而不是数组?

谢谢

Jam*_*iec 5

你可以把它变成条目,过滤它们,然后把它变成一个对象:

const events = {
    'event-1': { id: 'event-1', channel: 'facebook'},
    'event-2': { id: 'event-2', channel: 'twitter'},
    'event-3': { id: 'event-3', channel: 'slack'},
  }
  
const result = Object.fromEntries( 
    Object.entries(events).filter( ([key,value]) => value.channel == "facebook" || value.channel == "slack")
);

console.log(result);
Run Code Online (Sandbox Code Playgroud)

您可以通过将它们放在数组中并使用来检查频道列表 includes

const events = {
    'event-1': { id: 'event-1', channel: 'facebook'},
    'event-2': { id: 'event-2', channel: 'twitter'},
    'event-3': { id: 'event-3', channel: 'slack'},
  }
  
const channels = ["facebook","slack"];
const result = Object.fromEntries( 
    Object.entries(events).filter( ([key,value]) => channels.includes(value.channel))
);

console.log(result);
Run Code Online (Sandbox Code Playgroud)