@Alex_87

Вместо массива получаю строку в коде?

Добрый вечер! Не могу понять, что в моём коде не так. Я получаю из массивов максимальные значения и хочу записать в новый массив(resultArr), но они записываются как строка. Как сделать так, чтобы 7 была первым значением массива, 21 вторым и 10 третьим?
const data = [
  [-5, 7, 1],
  [3, 21, 3],
  [-1, -1, 10],
];

getIndexOfWarmestDay(data); // 2

function getIndexOfWarmestDay(data){
  let resultArr = [];
  let max = 0; 
   for (let i = 0; i < data.length; i += 1){
        for( let j = 0; j < data[i].length; j += 1 ){
          if (data[i][j] > max){
             max = data[i][j];
          }
        }
        resultArr += max;
        max = 0;
   }
   console.log(resultArr);
}
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Не могу понять, что в моём коде не так.

Да в общем-то, всё не так:

  1. function getIndexOfWarmestDay(data){

    Козлиное имя функции - не соответствует тому, что она должна делать.

  2. let max = 0;

    Каким будет результат, если все элементы массива отрицательные? Начальное максимальное значение должно быть максимально минимальным - минус бесконечность.

  3. resultArr += max;

    Это как вообще родилось? Надо было погуглить, как выполняется добавление значения в массив, вместо того, чтобы высасывать из пальца подобную чушь.

  4. max = 0;

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

  5. console.log(resultArr);

    Функция должна заниматься чем-то одним. Не надо смешивать вычисления и вывод результатов. Вместо console.log тут надо делать return.

  6. Слишком многословно, зачем-то написано десять строк вместо одной: data.map(n => Math.max(...n)).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы