на основе индекса массива добавить элементы в массив в объекте - PullRequest
0 голосов
/ 11 июня 2018

Я очищаю веб-сайт и у меня есть массив чисел, по которым я зацикливаюсь:

const arr = [1,2,3,1,2,4,5,6,7];

они соответствуют выигрышам / проигрышам / ничьим для разных команд:

то есть

1-й предмет в массиве выигран, второй - ничья, третий - проигрыш, четвертый - выигрыш, пятый - ничья, шестой - проигрыш и т. Д.

Как мне пройти через них, чтобы у меня было что-то вродеследующее:

const teams = [{
  won: 1,
  draw: 2,
  lost: 3
 },{ 
  won: 1,
  draw: 2,
  lost: 4
 },{
  won: 5,
  draw: 6,
  lost: 7
}];

Я попробовал что-то вроде следующего, но это не сработало, как я ожидал.

   const arr = [1, 2, 3, 1, 2, 4, 5, 6, 7];

const newArr = [];

arr.forEach((item, index => {
   if (index % 0 === 0) {
     newArr.push({
       won: item
     });

   } else if (index % 1 === 0) {
     newArr.push({
       draw: item
     });
   } else {
     newArr.push({
       lost: item
     });
    }
 });

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

К сожалению, использование методов массива, таких как forEach, не будет работать хорошо, потому что вам нужно объединить несколько элементов массива в один объект.Это возможно, но это немного сбивает с толку.Это может быть понятнее, если вы используете for цикл:

const arr = [1,2,3,1,2,4,5,6,7];
const teams = [];
for (let i = 0; i < arr.length; i += 3) {
  teams.push({
    won: arr[i],
    draw: arr[i + 1],
    lost: arr[i + 2],
  });
}

console.log(teams);
0 голосов
/ 11 июня 2018

Вы можете зациклить свой массив, но учитывайте только каждый третий элемент, используя i+=3:

let teams = [];
function teamStats(won, draw, lost){
  return {won, draw, lost};
}
for(let i = 0; i < arr.length; i+=3){
  teams.push(teamStats(arr[i], arr[i+1], arr[i+2]));
}
0 голосов
/ 11 июня 2018

Вы хотите

index % 3 === 0; // 0, 3, 6, ...
index % 3 === 1; // 1, 4, 7, ...
index % 3 === 2; // 2, 5, 8, ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...