@novikov433

Вывести всех людей в консоль, вывести средний возраст людей и имя человека с самой большой зарплатой в списке?

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        var pn =['Alex', 'Mark', 'Victor', 'Maxim', 'Robert'],
            pnf = pn[Math.floor(Math.random() * pn.length)];   

        var chislo = prompt('Введите ко-во массивов');
        var massive = [];

        for (let i=0; i < chislo; i++) {
            massive.push({
                date: (new Date(Math.floor(Math.random() * (d2 - d1) + d1))).toDateString(),
                summ: Math.floor(Math.random() * (500 - 0 + 1)) + 0,
                name: pn[Math.floor(Math.random() * pn.length)]
            });
        }
        console.table(massive);


    </script>
</body>
</html>
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 2
Делаешь сравнение или сортировку и выводишь переменную.
Ответ написан
Комментировать
contraomnes
@contraomnes
Frontend developer
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    // рандомайзер даты
    function randomDate(start, end) {
      return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
    }

    var pn = ['Alex', 'Mark', 'Victor', 'Maxim', 'Robert'],
        pnf = pn[Math.floor(Math.random() * pn.length)]; // я не знаю, что это такое

    var chislo = prompt('Введите ко-во массивов');
    var massive = [];

    for (let i = 0; i < chislo; i++) {
      massive.push({
        // не знаю, что такое d2, d1 и, в общем случае, исхожу из того, что я могу получить корректную дату,
        // date: (new Date(Math.floor(Math.random() * (d2 - d1) + d1))).toDateString(),
        date: randomDate(new Date(1960, 0, 1), new Date(2000, 0, 1)).toDateString(),
        summ: Math.floor(Math.random() * (500 - 0 + 1)) + 0,
        name: pn[Math.floor(Math.random() * pn.length)]
      });
    }
    console.table(massive);

    const initialValues = {
      summ: 0, // самая высокая зп
      summOfYears: 0, // сумма годов рождения
    };

    const {name, summOfYears} = massive.reduce((acc, curr) => {
      const {summ, name} = acc.summ > curr.summ ? acc : curr;
      return {
        summ,
        name,
        summOfYears: acc.summOfYears + new Date(curr.date).getFullYear(),
      };
    }, initialValues);

    const averageAge = summOfYears && Math.round(new Date().getFullYear() - summOfYears / massive.length);

    if (name && averageAge) {
      console.log(`Самый высокооплачиваемый ${name}`);
      console.log(`В среднем ребятам ${averageAge}`);
    }


    // пока писал, подумал, что я немного издеваюсь, и это будет заметно в общем... вот более адекватное решение для вас

    /*
    var summOfYears = 0, // сумма годов рождения
      whoWithMaxSalary = {};  // человек с самой высокой зп
    massive.forEach((person) => {
      whoWithMaxSalary = whoWithMaxSalary.summ > person.summ ? whoWithMaxSalary : person;
      summOfYears += new Date(person.date).getFullYear();
    });

    // если summOfYears равна не нулю, тосчитаем средний возраст
    const averageAge = summOfYears && Math.round(new Date().getFullYear() - summOfYears / massive.length);

    if (whoWithMaxSalary.name && averageAge) {
      console.log('Самый высокооплачиваемый: ' + whoWithMaxSalary.name);
      console.log('В среднем ребятам: ' + averageAge);
    }
    */

    </script>
</body>
</html>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы