Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组中按字段列出的项目长度_Javascript_Reactjs - Fatal编程技术网

Javascript 数组中按字段列出的项目长度

Javascript 数组中按字段列出的项目长度,javascript,reactjs,Javascript,Reactjs,如何从数组中获取包含特定值的对象数 使用componentDidMount获取Firestore数据库中存储的数据 这将装载This.state中的数据,但我希望通过状态字段获取每个数据的计数值。下面是一个示例,我正在尝试获取status=activedraft-paused的条目长度 类应用程序扩展了React.Component{ 建造师{ 超级的 此.state={ 活动:[{ id:1, 现状:草案, }, { id:2, 状态:活动, }, { id:3, 现状:草案, }, { i

如何从数组中获取包含特定值的对象数

使用componentDidMount获取Firestore数据库中存储的数据

这将装载This.state中的数据,但我希望通过状态字段获取每个数据的计数值。下面是一个示例,我正在尝试获取status=activedraft-paused的条目长度

类应用程序扩展了React.Component{ 建造师{ 超级的 此.state={ 活动:[{ id:1, 现状:草案, }, { id:2, 状态:活动, }, { id:3, 现状:草案, }, { id:4, 状态:暂停, } ] }; } 渲染{ const totalCampaigns=this.state.campaigns const activeCampaigns=this.state.campaigns.filtercampaign=>campaign.status==active const draftCampaigns=this.state.campaigns.filtercampaign=>campaign.status==draft const pausedCampaigns=this.state.campaigns.filtercampaign=>campaign.status===paused 回来 总计{totalCampaigns.length} 活动{activeCampaigns.length} 草稿{draftCampaigns.length} 暂停{PausedCampages.length} ; } } ReactDOM.render,document.getElementByIdroot; 对state.campeties使用reduce方法,并返回一个对象,其中键为状态,值为状态的出现次数

让状态={ 活动:[{ id:1, 现状:草案, }, { id:2, 状态:活动, }, { id:3, 现状:草案, }, { id:4, 状态:暂停, } ] }; 让getCount=state.campaigns.reducefunctionacc,curr{ 如果!acc.hasOwnPropertycurr.status{ 会计科目[当前状态]=1 }否则{ 附件[当前状态]+=1 } 返回acc; }, {}
console.loggetCount您可以使用以下代码

campaigns_1 = campaigns.reduce(function(acc, cur){
    if(!acc[cur.status]) { 
      acc[cur.status] = []
    }
    acc[cur.status].push(cur);
    return acc;
}, {});
现在,活动1的形式为

    {
       "draft": [ {
         "id": 1,
         "status": "draft"
       },
       {
          "id": 3,
          "status": "draft"
       }],

       "active": [{
           "id": 2,
           "status": "active"
       }],

       "paused": [{
           "id": 4,
           "status": "paused"
       }]
    }
现在要了解有多少元素的状态为草稿,您可以使用这些元素

const = no_of_draft_campaigns = campaigns_1.draft.length;
const = no_of_active_campaigns = campaigns_1.active.length;
const = no_of_paused_campaigns = campaigns_1.paused.length;
您将获得的一个好处是,当您需要具有特定状态的所有元素时,您可以通过

您可以在这里查看一个工作示例


非常感谢。我认为我的问题实际上并不是我在TypeError中得到的类似结果:无法读取未定义的属性'reduce',而之前它是未定义的过滤器。我认为数组本身更重要。我会把它贴在上面,也许你可以看看为什么它是未定义的?不管怎样,我接受了答案,因为它是当场的。
const = no_of_draft_campaigns = campaigns_1.draft.length;
const = no_of_active_campaigns = campaigns_1.active.length;
const = no_of_paused_campaigns = campaigns_1.paused.length;
const draft_campaigns = campaigns_1.draft;
const active_campaigns = campaigns_1.active;
const paused_campaigns = campaigns_1.paused;