Объекты 13/30

Добрый день.

Подскажите, пожалуйста, вот в этом коде из задания 13:
var gameRules = {
diceNumber: 2,
maxAttempts: 3
};

var firstCat = {
name: ‘Кекс’,
points: 0
};

var secondCat = {
name: ‘Рудольф’,
points: 0
};

var cats = [firstCat, secondCat];

var runGame = function (rules, players) {
for (var currentAttempt = 1; currentAttempt <= rules.maxAttempts; currentAttempt++) {
for (var i = 0; i < players.length; i++) {
var throwResult = keks.throwDice(rules.diceNumber, rules.diceNumber * 6);
players[i].points += throwResult;
console.log(players[i].name + ’ выбросил ’ + players[i].points);
}
}
return players;
};

var getWinners = function (players) {
var winners = [];
var max = players[0];

for (var i = 0; i < players.length; i++) {
var currentPlayer = players[i];
if (currentPlayer.points > max.points) {
max = currentPlayer;
console.log('Новый рекордсмен: ’ + currentPlayer.points);
}
}

return winners;
};

cats = runGame(gameRules, cats);
console.log(cats);
var tops = getWinners(cats);
console.log(tops);

В условии внутри цикла внутри функции getWinners мы сравниваем “currentPlayer.points > max.points”.
Почему ниже мы пишем
max = currentPlayer, а не
max.points = currentPlayer.points?

Спасибо.

смотрите, мы в max записываем объект.

var max = players[0]; просто берем его “от балды”, могли бы взять и второго и десятого, просто мы точно предполагаем что массив не пустой и хотя бы первый объект в нем есть.

это первый кошак из массива кошаков players - параметр функции (который cats при вызове функции, т.е. массив объектов передается как аргумент).

там будет записан Кекс:

firstCat = {
  name: 'Кекс',
  points: 'какое-то число'
};

почему ‘какое-то число’? ну потому что оно изменится с 0 на какое-то в результате работы функции-рандомайзера runGame

мы обращаемся к свойству .points этого объекта - max.points
вот если это свойство будет меньше чем у аналогичного свойства другого объекта, перебираемого в цикле, то наша задача записать в переменную max другой объект.

поэтому в max идет объект currentPlayer, а не его очки (т.е. свойство объекта).

таким образом в max будет записан объект, где его свойство .point будет максимальным среди других объектов массива players

1 лайк

Спасибо!