首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据值js过滤对象的对象

根据值js过滤对象的对象
EN

Stack Overflow用户
提问于 2021-07-22 21:54:55
回答 3查看 44关注 0票数 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'},
  };

例如,我需要获取具有facebook的事件,并松弛任何想法如何在对象而不是数组的javascript上工作?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2021-07-22 21:58:42

您可以将其转换为条目,对其进行过滤,然后将其转换回对象:

代码语言:javascript
复制
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);

您可以通过将通道放入数组并使用includes来检查通道列表

代码语言:javascript
复制
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);

票数 5
EN

Stack Overflow用户

发布于 2021-07-22 22:01:36

试试这个:

代码语言:javascript
复制
const events = {
            'event-1': { id: 'event-1', channel: 'facebook' },
            'event-2': { id: 'event-2', channel: 'twitter' },
            'event-3': { id: 'event-3', channel: 'slack' },
        };
        
var val = Object.values(events).filter(t=>t.channel == 'facebook' || t.channel == 'slack');

console.log(val);

票数 2
EN

Stack Overflow用户

发布于 2021-07-22 22:14:58

维护一个单独的变量,保存所有社交平台,并基于此过滤事件数组……

代码语言:javascript
复制
const socialPlatforms = [
  'facebook',
  'slack'
];

const events = {
  'event-1': { id: 'event-1', channel: 'facebook'},
  'event-2': { id: 'event-2', channel: 'twitter'},
  'event-3': { id: 'event-3', channel: 'slack'},
};

const socialEvents = Object.values(events)
  .filter(event => socialPlatforms.includes(event.channel))
  .map(event => event.id);

console.log(socialEvents);

/*

[ 'event-1', 'event-3' ]

*/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68486093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档