Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于比较数组中不同字典的Java脚本循环_Javascript_Dictionary_For Loop - Fatal编程技术网

Javascript 用于比较数组中不同字典的Java脚本循环

Javascript 用于比较数组中不同字典的Java脚本循环,javascript,dictionary,for-loop,Javascript,Dictionary,For Loop,我想把一本具有指导者某些偏好的词典与其他包含指导者特征的词典进行比较 因此,每个教练都会得到一个分数,即他与被教练偏好的匹配程度,或者因为他与重要偏好不匹配而以-1分被排除在外 一名教练将与24名教练进行比较,得到一个分数,这样我就可以知道哪场比赛是最好的 问题:我如何循环这个 下面是一个代码示例: //coachee\\ var coachee = { "geschlecht": 1, "alter_option_1": 1,

我想把一本具有指导者某些偏好的词典与其他包含指导者特征的词典进行比较

因此,每个教练都会得到一个分数,即他与被教练偏好的匹配程度,或者因为他与重要偏好不匹配而以-1分被排除在外

一名教练将与24名教练进行比较,得到一个分数,这样我就可以知道哪场比赛是最好的

问题:我如何循环这个

下面是一个代码示例:

//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。再次非常感谢

哇,非常感谢,我会努力理解这一点(我是心理学家,所以不是专家)并实施它。当我尝试时,我会再次回答。