Правильное использование return

80
15 сентября 2021, 20:40

Не понимаю, почему когда я вызываю функцию в данном случае, то получаю undefined. Функция получает массив и выводит индекс того элемента, у которого сумма элементов слева от него равна сумме элементов справа. В данном случае должно выводить 3.

function findEvenIndex(arr) { 
  let leftPart; 
  let rightPart; 
 
  function multi(multiArr) { 
    let result = 0; 
    multiArr.forEach(function(item) { 
      result += item; 
    }); 
    return result; 
  } 
 
  arr.forEach(function(item, i) { 
    if (i < 1) { 
      leftPart = []; 
    } else if (i === 1) { 
      leftPart = []; 
      leftPart.push(arr[0]); 
    } else if (i > 1) leftPart = arr.slice(0, i); 
    rightPart = arr.slice(i + 1, arr.length); 
    if (multi(leftPart) === multi(rightPart)) { 
      return i; 
    } else return -1; 
  }); 
} 
 
console.log(findEvenIndex([1, 2, 3, 4, 3, 2, 1]));

Answer 1

Чуть-чуть подшаманил :

function findEvenIndex(arr) { 
  let leftPart = [], 
    rightPart, 
    // обьявили переменную, в которую будем записывать результат 
    // сразу дадим ей значение -1 (ничего не нашли) 
    res = -1 
 
  const multi = arr => arr.reduce((a, v) => a += v, 0) 
 
  arr.forEach((item, i) => { 
    if (i === 1) 
      leftPart.push(arr[0]) 
    else if (i > 1) 
      leftPart = arr.slice(0, i) 
 
    rightPart = arr.slice(i + 1, arr.length) 
 
    if (multi(leftPart) === multi(rightPart)) 
      // в нужный момент в переменную результата присваиваем реальный результат 
      res = i 
  }) 
 
  // уже после цикла делаем возврат результата с функции 
  return res 
} 
 
console.log(findEvenIndex([1, 2, 3, 4, 3, 2, 1]))

READ ALSO
Выдвижное меню на мобильной версии лагает:(

Выдвижное меню на мобильной версии лагает:(

Подскажите как устранить глюк у выдвижного меню? Как только загрузился сайт и ты первый раз тапаешь по иконке, она как-то прерывисто раздвигает...

98
Как получить длительность аудио ( ) до нажатий на play?

Как получить длительность аудио ( ) до нажатий на play?

Есть тег audio на страницеМожно ли при загрузке страницы получить в js перемену длительность аудио до нажатий на кнопку play

93
Отскакивание движущегося тела от стен внутри другого движущегося тела. Js

Отскакивание движущегося тела от стен внутри другого движущегося тела. Js

Мне надо, чтобы, когда шарик попадёт внутрь квадрата, он двигался внутри, постоянно отскакивая от стен квадратаВот набросок моего кода:

98