Javascript 用于比较数组中不同字典的Java脚本循环
我想把一本具有指导者某些偏好的词典与其他包含指导者特征的词典进行比较 因此,每个教练都会得到一个分数,即他与被教练偏好的匹配程度,或者因为他与重要偏好不匹配而以-1分被排除在外 一名教练将与24名教练进行比较,得到一个分数,这样我就可以知道哪场比赛是最好的 问题:我如何循环这个 下面是一个代码示例:Javascript 用于比较数组中不同字典的Java脚本循环,javascript,dictionary,for-loop,Javascript,Dictionary,For Loop,我想把一本具有指导者某些偏好的词典与其他包含指导者特征的词典进行比较 因此,每个教练都会得到一个分数,即他与被教练偏好的匹配程度,或者因为他与重要偏好不匹配而以-1分被排除在外 一名教练将与24名教练进行比较,得到一个分数,这样我就可以知道哪场比赛是最好的 问题:我如何循环这个 下面是一个代码示例: //coachee\\ var coachee = { "geschlecht": 1, "alter_option_1": 1,
//coachee\\
var coachee = {
"geschlecht": 1,
"alter_option_1": 1,
"alter_option_2": 1,
"alter_option_3": 0,
"themen_option_1": 1,
"themen_option_2": 0,
"themen_option_3": 0,
"branche_option_1": 1,
"branche_option_2": 0,
"branche_option_3": 0,
"erfahrung_option_1": 1,
"erfahrung_option_2": 0,
"erfahrung_option_3": 1,
"sprache_option_1": 1,
"sprache_option_2": 0,
"sprache_option_3": 0,
}
//coach1\\
var coach1 = {
coach1_answers_geschlecht : 2,
coach1_answers_alter_option_1 : 0,
coach1_answers_alter_option_2 : 1,
coach1_answers_alter_option_3 : 0,
coach1_answers_themen_option_1 : 1,
coach1_answers_themen_option_2 : 0,
coach1_answers_themen_option_3 : 1,
coach1_answers_branche_option1 : 1,
coach1_answers_branche_option2 : 1,
coach1_answers_branche_option3 : 0,
coach1_answers_erfahrung_option1 : 1,
coach1_answers_erfahrung_option2 : 1,
coach1_answers_erfahrung_option3 : 0,
coach1_answers_sprache_option_1 : 1,
coach1_answers_sprache_option_2 : 1,
coach1_answers_sprache_option_3 : 1,
};
///COMPARISON\\\
//Themen\\
if (answers["themen_option_1"] == 1 && coach1_answers_themen_option_1 == 1) {
coach1_themen1_score = 1;
} else {
coach1_themen1_score = 0
}
if (answers["themen_option_2"] == 1 && coach1_answers_themen_option_2 == 1) {
coach1_themen2_score = 1;
} else {
coach1_themen2_score = 0
}
if (answers["themen_option_3"] == 1 && coach1_answers_themen_option_3 == 1) {
coach1_themen3_score = 1;
} else {
coach1_themen3_score = 0
}
var coach1_themen_score = coach1_themen1_score + coach1_themen2_score + coach1_themen3_score
//Branche\\
if (answers["branche_option_1"] == 1 && coach1_answers_branche_option1 == 1) {
coach1_branche1_score = 1;
} else {
coach1_branche1_score = 0
}
if (answers["branche_option_2"] == 1 && coach1_answers_branche_option2 == 1) {
coach1_branche2_score = 1;
} else {
coach1_branche2_score = 0
}
if (answers["branche_option_3"] == 1 && coach1_answers_branche_option3 == 1) {
coach1_branche3_score = 1;
} else {
coach1_branche3_score = 0
}
var coach1_branche_score = coach1_branche1_score + coach1_branche2_score + coach1_branche3_score
//Erfahrung\\
if (answers["erfahrung_option_1"] == 1 && coach1_answers_erfahrung_option1 == 1) {
coach1_erfahrung1_score = 1;
} else {
coach1_erfahrung1_score = 0
}
if (answers["erfahrung_option_2"] == 1 && coach1_answers_erfahrung_option2 == 1) {
coach1_erfahrung2_score = 1;
} else {
coach1_erfahrung2_score = 0
}if (answers["erfahrung_option_3"] == 1 && coach1_answers_erfahrung_option3 == 1) {
coach1_erfahrung3_score = 1;
} else {
coach1_erfahrung3_score = 0
}
var coach1_erfahrung_score = coach1_erfahrung1_score + coach1_erfahrung2_score + coach1_erfahrung3_score
//Score\\
var coach1_score = (coach1_alter_score + coach1_themen_score + coach1_branche_score + coach1_erfahrung_score)*10
///EXCLUSION\\\
//Alter\\
if (answers["alter_option_1"] == 1 && coach1_answers_alter_option_1 == 1) {
coach1_alter_score = 1;
} else if (answers["alter_option_2"] == 1 && coach1_answers_alter_option_2 == 1) {
coach1_alter_score = 1;
} else if (answers["alter_option_3"] == 1 && coach1_answers_alter_option_3 == 1) {
coach1_alter_score = 1;
} else {
coach1_score = -1
}
//Sprache\\
if (answers["sprache_option_1"] == 1 && coach1_answers_sprache_option_1 == 1 ) {
coach1_sprache_score = 1;
} else if (answers["sprache_option_2"] == 1 && coach1_answers_sprache_option_2 == 1 ) {
coach1_sprache_score = 1;
} else if (answers["sprache_option_3"] == 1 ) {
coach1_sprache_score = 1;
} else {
coach1_score = -1;
}
//Geschlecht\\
if (answers["geschlecht"] == 3) {
coach1_geschlecht_score = 1;
} else if (answers["geschlecht"] == coach1_answers_geschlecht) {
coach1_geschlecht_score = 1;
} else {
coach1_score = -1;
}
//Coach2\\
var coach2 = {
coach2_answers_geschlecht : 2,
coach2_answers_alter_option_1 : 0,
coach2_answers_alter_option_2 : 1,
coach2_answers_alter_option_3 : 0,
coach2_answers_themen_option_1 : 1,
coach2_answers_themen_option_2 : 1,
coach2_answers_themen_option_3 : 1,
coach2_answers_branche_option1 : 1,
coach2_answers_branche_option2 : 1,
coach2_answers_branche_option3 : 0,
coach2_answers_erfahrung_option1 : 1,
coach2_answers_erfahrung_option2 : 1,
coach2_answers_erfahrung_option3 : 0,
coach2_answers_sprache_option_1 : 1,
coach2_answers_sprache_option_2 : 1,
coach2_answers_sprache_option_3 : 1,
};
因此,我需要一个包含所有分数的数组,如:
coachs\u score=[coach1\u score,coach2\u score,…]
我会手动为每个Coach重复//COMPARISON\和//EXCLUSION\块,但我必须这样做24次。有没有办法循环这个
非常感谢各位。我建议将数据结构更改为更适合数组的样式,并使用相同的键组计算分数
const
getScore=coach=>{
常数
分数={},
键1=['themen','branche','erfahrung'],
键2=['alter','sprache'];
键1.forEach(k=>score[k]=coachee[k]。reduce((s,v,i)=>s+v*coach[k][i],0));
score.score=键1.减少((s,k)=>s+分数[k],0)*10;
键2.forEach(k=>{
分数[k]=+coachee[k]。切片(0,-1)。一些((v,i)=>v*coach[k][i])||+coach1[k][coach[k]。长度-1]|0;
如果(!score[k])score.score=-1;
});
score.geschlecht=+(coach.geschlecht==3 | | coachee.geschlecht==coach.geschlecht)
如果(!score.geschlecht)score.score=-1;
返回分数;
},
受训者={
geschlecht:1,
alter:[1,1,0,0],
themen:[1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1],
分支:[1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0],
erfahrung:[1,0,1,0,0],
斯普拉奇:[1,0,0]
},
coach1={
geschlecht:2,
alter:[0,1,0,1],
主题:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1],
分支:[1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,0,0,1,0,1,1,1,1],
erfahrung:[1,1,0,0,1],
斯普拉奇:[1,1,1]
};
console.log(getScore(coach1))代码>好的,我仍然没有得到代码,因为这对我理解Java脚本来说是一种复杂的方式,但我仍然让它对我有用。我将其编辑为代码:
var coach1_values = getScore(coach1)
var coach2_values = getScore(coach2)
var coach3_values = getScore(coach3);
//Summieren der Werte zum Score\\
const sumValues = obj => Object.values(obj).reduce((a, b) => a + b);
if (coach1_values.score != -1) {
var coach1_score = sumValues(coach1_values);
} else coach1_score = -1;
if (coach2_values.score != -1) {
var coach2_score = sumValues(coach2_values);
} else coach2_score = -1;
if (coach3_values.score != -1) {
var coach3_score = sumValues(coach3_values);
} else coach3_score = -1;
我不明白如果分数与“geschlecht”匹配,为什么会得到110,但这没问题,因为每个人的分数都是110。再次非常感谢哇,非常感谢,我会努力理解这一点(我是心理学家,所以不是专家)并实施它。当我尝试时,我会再次回答。