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