![](/img/trans.png)
[英]javascript delete from array based on another array with same object and values
[英]Javascript count same array of object values based on two values
假设我们有一个像这样的对象数组
const studentRecord = [
{
name: 'John Doe',
gender: 'Male',
grade: '85'
},{
name: 'Steve Doe',
gender: 'Male',
grade: '85'
},{
name: 'Jane Doe',
gender: 'Male',
grade: '90'
},{
name: 'Mary Jane',
gender: 'Female',
grade: '85'
},
]
我想计算所有相同年级的男学生和相同年级的女学生,这样的结果将是......
85: {
Male: 2,
Female: 1,
}
90: {
Female:1
}
到目前为止我只有这个代码
const foo = {};
studentRecord.reduce((prevVal, currentVal) => {
foo[currentVal['gender']] = (foo[currentVal['gender']] || 0) + 1;
});
只输出{Male: 2, Female: 2}
当归约成一个对象时,如果它不存在,首先在等级属性上创建一个对象。 然后在该等级的Male
或Female
属性上创建一个对象(如果它不存在),并增加它:
const studentRecord = [ { name: 'John Doe', gender: 'Male', grade: '85' },{ name: 'Steve Doe', gender: 'Male', grade: '85' },{ name: 'Jane Doe', gender: 'Male', grade: '90' },{ name: 'Mary Jane', gender: 'Female', grade: '85' }, ]; const results = studentRecord.reduce((a, { gender, grade }) => { if (!a[grade]) { a[grade] = {}; } a[grade][gender] = (a[grade][gender] || 0) + 1; return a; }, {}); console.log(results);
或者,没有减少:
const studentRecord = [ { name: 'John Doe', gender: 'Male', grade: '85' },{ name: 'Steve Doe', gender: 'Male', grade: '85' },{ name: 'Jane Doe', gender: 'Male', grade: '90' },{ name: 'Mary Jane', gender: 'Female', grade: '85' }, ]; const results = {}; for (const { gender, grade } of studentRecord) { if (!results[grade]) { results[grade] = {}; } results[grade][gender] = (results[grade][gender] || 0) + 1; } console.log(results);
尝试这个
const studentRecord = [ { name: 'John Doe', gender: 'Male', grade: '85' },{ name: 'Steve Doe', gender: 'Male', grade: '85' },{ name: 'Jane Doe', gender: 'Male', grade: '90' },{ name: 'Mary Jane', gender: 'Female', grade: '85' }, ] const grades = {}; studentRecord.map(e => { if(!grades[e.grade]) grades[e.grade] = {Male:0,Female:0}; }); studentRecord.map(e => grades[e.grade][e.gender]++ ); document.getElementById("result").innerHTML = JSON.stringify(grades)
<div id="result"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.