javascript - 合并重复并增加数组javascript中每个对象的计数
问题描述
我有一个这样的数组:
const studentList = [{code: "AA", gender:"male", DOB:"2000-05-15"},
{code: "AA", gender:"female", DOB:"2015-05-15"},
{code:"A0", gender:"female", DOB:"2005-01-01"},
{code: "A1", gender:"male", DOB:"2015-01-15"}]
我想要的结果是:孩子确定:Date.now().getFUllYear() - DOB.getFullYear() < 18 年
[{code:"AA", count:2, female: 1, child: 1},
{code:"A0", count: 1, female: 1, child: 1},
{code: "A1", count: 1, female: 0, child: 1}]
到目前为止,我已经做了这样的事情:
const result = new Map();
studentList.map(e =>{
const isFemale = e.gender === "female";
const isChild = nowYear - e.DOB.getYear() < 18;
if(result.has(e.code) && isChild && isFemale){
result.get(e.code).count++;
result.get(e.code).female++;
result.get(e.code).child++;
}else if(!result.get(e.code && !isFemale && !isChild) {
result.set(e.code, Object.assign(e,{count: 1, female: 0; child: 0 }))
}
....
})
因此,对于每个条件,我都必须在 IF ELSE 中添加一个语句,所以我想知道是否有任何更短的方法可以在不使用太多 if else 的情况下做到这一点
解决方案
利用加号运算符 (+) 将布尔值true
和分别转换false
为数字1
和的功能0
,并使用OR
(||) 运算符根据条件分配两个值之一,您可以将代码简化为:
const studentList = [
{code: "AA", gender:"male", DOB:"2000-05-15"},
{code: "AA", gender:"female", DOB:"2015-05-15"},
{code:"A0", gender:"female", DOB:"2005-01-01"},
{code: "A1", gender:"male", DOB:"2015-01-15"}
];
const result = new Map();
var nowYear = new Date().getYear();
studentList.forEach(e =>{
var item = result.get(e.code) || {code: e.code, count: 0, female: 0, child: 0 };
item.count++;
item.female += e.gender === "female";
item.child += nowYear - new Date(Date.parse(e.DOB)).getYear() < 18;
result.set(item.code, item);
})
for ([key, value] of result.entries()) {
console.log(value);
}
推荐阅读
- javascript - 如何使用 jQuery 将列表项添加到列表中?
- java - pmd规则:静态导入过多可能导致unitTest中代码乱码不违反
- python - 网页抓取。没有得到我想要的
- html - 星云响应式布局
- javascript - 尝试使用单个按钮功能将播放列表从数组添加到另一个组件
- javascript - 序列化的 select2 值在 asp.net mvc 的控制器中不可用
- android - 我应该在 Android sdkmanager CLI 上进行哪些更改以允许从 artifactory 下载?
- react-native - 无限调用 RenderFooter
- android - Alarmmanager 和 Jobscheduler 不可靠。应用程序如何在 Android 9 和 10 中按时提供通知?
- php - 我有一个结果 JSON,然后我看到了带有 var_demp 的输出,但它没有显示完整的结果