Как правильно перебрать массив, что бы четные пошли в firstTeam, а не четные в secondTeam?

Несколько человек стоят рядом, разделенные на две команды. Первый человек попадает в команду 1, второй - в команду 2, третий - в команду 1 и так далее.

Реализуй функцию getRowWeights, которая принимает массив чисел (веса людей) и возвращает новый массив из двух целых чисел, где первое - общий вес команды 1, а второе - общий вес команды 2.

Примечания:

  • Размер массива не менее 1.
  • Все числа положительные.

Пример:

getRowWeights([10]) === [10, 0]

getRowWeights([10, 85, 90]) === [100, 85]

getRowWeights([8, 5, 9, 3]) === [17, 8]

function getRowWeights(array) {
  let firstTeam = 0;
  let secondTeam = 0;
  const weightsTeam = [];

  for (const value of array) {
    firstTeam += value;
  }

  for (const value of array) {
    secondTeam += value;
  }

  weightsTeam.push(firstTeam, secondTeam);

  return weightsTeam;
}

Ответы (1 шт):

Автор решения: Sergey Glazirin

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

Достаточно один раз пройти по массиву. Смотреть на индекс, в данном случае, смотрим если остаток от деления на 2 равен 0 то четное, если нет - нечетное. В зависимости от условия добавляем в первую или вторую команду.

function getRowWeights(array) {
  let firstTeam = 0;
  let secondTeam = 0;

  for (let i = 0; i < array.length; i++) {
    if (i % 2 === 0) {
      firstTeam += array[i];
    } else {
      secondTeam += array[i];
    }
  }

  return [firstTeam, secondTeam];
}

console.log(getRowWeights([10]));
console.log(getRowWeights([10, 85, 90]));
console.log(getRowWeights([8, 5, 9, 3]));

→ Ссылка