javascript - 练习 JavaScript
问题描述
我目前在练习 JS,这是一个我正在努力解决这个问题的问题。你能尝试解决这个问题并分享你的代码吗?
像这样的对象:对象的构成和屏幕的图像。对象的值是以下九种模式之一。
- 'A+'、'A'、'B+'、'B'、'C+'、'C'、'D+'、'D'、'F'
{
'classA': 'C',
'classB': 'B',
'classC': 'B+',
'classD': 'D+',
'classE': 'C+',
'classF': 'A+',
}
参数 requiredClasses 是一个字符串数组: ['classsE', 'classD', 'classO', 'classP']
实现该函数以返回满足以下条件的对象。
分数对象持有的键必须包含在新对象中。但是,必须将这些值转换为数字并根据以下原则进行分配。
A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
如果有一项作为 requiredClasses 数组的元素存在,但不作为 score 的键存在,则该元素将成为新对象的键,并且值必须为 0。如果在上面的示例作为参数输入,返回对象和以下内容。元素之间的顺序可能不同,但与评分无关。
我试图自己解决这个问题。
const getExamResult = (scores, requiredClasses) => {
let newScores = {};
const entries = Object.entries(scores);
//객체 key,object
let scoresKey = Object.keys(scores);
const scoresValue = Object.values(scores);
const newKeys = entries.map(el => el[0]);
console.log(newKeys);
const newValues = entries.map(el => { if (newKeys.key[0] === "A+"){
return 4.5;
}
else if (newKeys.key === "A") {
return 4;
}
else if (newKeys.key === "B+") {
return 3.5;
}
else if (newKeys.key === "B") {
return 3;
}
else if (newKeys.key === "C+") {
return 2.5;
}
else if (newKeys.key === "C") {
return 2;
}
else if (newKeys.key === "D+") {
return 1.5;
}
else if (newKeys.key === "D") {
return 1;
}
else
return 0;
});
for(let index in newKeys) {
newScores[newKeys[index]] = newValues[index];
}
for (let index in requiredClasses) {
if (newKeys.indexOf(`${requiredClasses[index]}`) === -1) {
newScores.requiredClasses[index] = 0;
}
}
return newScores;
}
如果您有更好的代码,请告诉我,或者让我知道哪一部分是错误的。我真的很感谢你提前回答。
解决方案
我想出了一个解决方案:
classKey={
'classA': 'C',
'classB': 'B',
'classC': 'B+',
'classD': 'D+',
'classE': 'C+',
'classF': 'A+',
};
scoreKey={
"A+" : 4.5,
"A" : 4,
"B+" : 3.5,
"B" : 3,
"C+" : 2.5,
"C" : 2,
"D+" : 1.5,
"D" : 1,
"F" : 0
};
function classScore(classKey,scoreKey){
classKeyDup=classKey; //duplicate of class key, doesn't change original
for (x in classKeyDup){ //Iterate through classes marks
for(y in scoreKey){ //Iterate through scoreKey
if (classKeyDup[x]==y){ //Check the mark of the class
classKeyDup[x]=scoreKey[y]; //Apply Fixed score
}
}
}
return classKeyDup;
}
console.log(classScore(classKey,scoreKey))
推荐阅读
- c++ - Boost 使用 VS 2019 构建新版本
- php - MyPOS 支付网关通过 API(不是 SDK)与 PHP Laravel 集成
- php - 清理wordpress安装第一次加载问题php7.4
- javascript - 如何使用 postgresql、php 或 javascript 上传/下载文件(图像、excel、pdf 等)
- javascript - 错误:无法读取未定义的属性“缩进”(CodeMirror)
- r - 我应该输入什么必要的代码?
- c++ - 异常处理这是 Nullptr?
- servicestack - 尝试从适配器“NetCoreContainerAdapter”解析服务“System.Boolean”时出错
- php - PHP(Wordpress)中元字段的值求和
- azure - 我们是否有 azure 本机库可以从 java 连接到 redis?