Переберите значения объекта 2, чтобы найти, совпадают ли они с переменной min объекта 1 - PullRequest
0 голосов
/ 02 октября 2019

Так что я действительно застрял в этом упражнении на несколько часов. Идея состоит в том, чтобы найти имя друга, который также изучает самый слабый предмет. У меня есть этот кусок кода здесь:

    const reportCard = {
  Biology: 85,
  English: 75,
  Economics: 90,
  History: 67,
  Philosophy: 98,
};


const subjects = {
  Dylan: 'Biology',
  Jen: 'English',
  Emily: 'Economics',
  Amy: 'History',
  Lenny: 'Philosophy',

};

console.log(studyBuddy(reportCard, subjects));

Я реализовал переменную min, чтобы найти самые низкие оценки в первом объекте, например, так:

val = Object.values(reportCard)
    const min = Math.min(...val)

Как я могу сопоставить второй объектзначения с первым, которые соответствуют переменной min. В любом случае, я могу это реализовать? Я просто хочу намек, я не хочу, чтобы кто-то решил это за меня.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Идея состоит в том, чтобы получить самое слабое имя субъекта из объекта reportCard;Вы можете пройтись по объекту, отметить объект, который имеет самые низкие оценки. Теперь, после получения наименьших оценок от объекта reportCard, снова выполните цикл по второму объекту 'subject', чтобы проверить, кто назначен субъекту, у которого самые низкие оценки, которые мы получили при цикле прохождения объекта 'reportCard'.

const reportCard = {
 Biology: 85,
 English: 75,
 Economics: 90,
 History: 67,
 Philosophy: 98,
};


const subjects = {
    Dylan: 'Biology',
   Jen: 'English',
  Emily: 'Economics',
  Amy: 'History',
  Lenny: 'Philosophy',
 };

function studyBuddy(reportCard, subjects){
var weakestSubjectName = null;
var min = Number.MAX_VALUE;

for(var key in reportCard){
    // check every marks whether it is lowest than the prev lowest marks or not
    // if so, assign the subject name which has currently lowest marks
    if(reportCard[key] < min){
        min = reportCard[key];
        weakestSubjectName = key;
    }
}
// now you can loop through the second object, to get the name of person/friend who's studying the subject
 for(var key in subjects){
        if(subjects[key] === weakestSubjectName) return key;
 }
 return null;
}
 console.log(studyBuddy(reportCard, subjects));
0 голосов
/ 02 октября 2019

Я постараюсь помочь вам, фактически не решая задачу. Сначала я бы взял ключи от объекта друзей, прошел их и использовал в качестве ключа для доступа к объекту reportCard. Позвольте привести вам краткий пример:

const studentNames = Object.keys(subjects); // all student names
studentNames.forEach(student => {
    const subjectValue = reportCard[student]; // now you have the value for every student
});

Предполагая, что максимальное значение для предмета равно 100, вы можете определить переменную, равную 101, на первом шаге и проверить ее в цикле, если у кого-либо из учеников меньшестоимость. Я надеюсь, что это поможет.

...