我试图像这样在JavaScript中创建一个计数器对象: 编辑:我添加了一个示例
let profile={skill:['javascript','javascript','html','css','css']}
let objectCount={}
profiles.map(profile => {
profile.skills.map(skill => {
skill = skill.toLowerCase();
if (!(skill in objectCount)) {
objectCount = { ...objectCount, [skill]: 1 };
} else {
objectCount.skill = objectCount.skill + 1;
}
});
});
}
我有一系列配置文件,并且其中包含一系列技能,例如:'javascript','html','css'等 我希望将objectCount设置为:
objectCount={
'html':1,
'javascript:2,
'css':2
}
但是由于某种原因
objectCount.skill=objectCount.skill+1
不起作用,因为我得到了一个在每个键中都带有1的对象,
有人知道我的错误是什么吗?
答案 0 :(得分:3)
您正尝试增加skill
对象上不存在的键objectCount
的值。相反,您想增加具有skill
变量名称的键的值。因此,您必须使用objectCount[skill]
而不是objectCount.skill
:
let profiles = [
{
skills: ['html', 'js']
},
{
skills: ['html', 'php']
}
]
let objectCount = {}
profiles.map(profile => {
profile.skills.map(skill => {
skill = skill.toLowerCase();
if (!(skill in objectCount)) {
objectCount = { ...objectCount, [skill]: 1 };
} else {
objectCount[skill] = objectCount[skill] + 1;
}
});
});
console.log(objectCount);
答案 1 :(得分:0)
另一种创建这个计数器映射的方法是使用reduce函数而不是map。