Получить строку из названия клуба и ФИО игрока

Рейтинг: 0Ответов: 2Опубликовано: 23.01.2023
[
  {
    _id: ObjectId("63ce4976d52b8e0552f39645"),
    name: 'Спартак',
    competition: {
      date: '15.01.2023',
      matches: [
        {
          number: 1,
          name: 'Спартак-Динамо',
          players: [
            { fio: 'Потапов К.С.', goalcount: 0 },
            { fio: 'Бочаров М.П.', goalcount: 1 },
            { fio: 'Петров А.И.', goalcount: 0 },
            { fio: 'Сергеев К.О.', goalcount: 2 },
            { fio: 'Любимов И.А.', goalcount: 0 }
          ]
        },
        {
          number: 2,
          name: 'Спартак-Урал',
          players: [
            { fio: 'Потапов К.С.', goalcount: 1 },
            { fio: 'Бочаров М.П.', goalcount: 0 },
            { fio: 'Петров А.И.', goalcount: 1 },
            { fio: 'Сергеев К.О.', goalcount: 0 },
            { fio: 'Ковалёв М.А.', goalcount: 2 }
          ]
        }
      ]
    }
  },
  {
    _id: ObjectId("63ce4976d52b8e0552f39646"),
    name: 'Рубин',
    competition: {
      date: '10.01.2023',
      matches: [
        {
          number: 1,
          name: 'Рубин-Ростов',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 3 },
            { fio: 'Бродский К.И.', goalcount: 0 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А.', goalcount: 1 }
          ]
        },
        {
          number: 2,
          name: 'Рубин-Краснодар',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 1 },
            { fio: 'Громилов А.П.', goalcount: 4 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А', goalcount: 0 }
          ]
        }
      ]
    }
  }
]

Как мне получить строку из названия клуба и ФИО игрока?

Ответы

▲ 0

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

const clubs = [
  {
    name: 'Спартак',
    competition: {
      date: '15.01.2023',
      matches: [
        {
          number: 1,
          name: 'Спартак-Динамо',
          players: [
            { fio: 'Потапов К.С.', goalcount: 0 },
            { fio: 'Бочаров М.П.', goalcount: 1 },
            { fio: 'Петров А.И.', goalcount: 0 },
            { fio: 'Сергеев К.О.', goalcount: 2 },
            { fio: 'Любимов И.А.', goalcount: 0 }
          ]
        },
        {
          number: 2,
          name: 'Спартак-Урал',
          players: [
            { fio: 'Потапов К.С.', goalcount: 1 },
            { fio: 'Бочаров М.П.', goalcount: 0 },
            { fio: 'Петров А.И.', goalcount: 1 },
            { fio: 'Сергеев К.О.', goalcount: 0 },
            { fio: 'Ковалёв М.А.', goalcount: 2 }
          ]
        }
      ]
    }
  },
  {
    name: 'Рубин',
    competition: {
      date: '10.01.2023',
      matches: [
        {
          number: 1,
          name: 'Рубин-Ростов',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 3 },
            { fio: 'Бродский К.И.', goalcount: 0 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А.', goalcount: 1 }
          ]
        },
        {
          number: 2,
          name: 'Рубин-Краснодар',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 1 },
            { fio: 'Громилов А.П.', goalcount: 4 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А', goalcount: 0 }
          ]
        }
      ]
    }
  }
];

var club_player_strings = [];

clubs.forEach(function(club) {
    club.competition.matches.forEach(function(match) {
        match.players.forEach(function(player) {
            club_player_strings.push("Club name: " + club.name + " Player name: " + player.fio);
       });
    });
});

console.log(club_player_strings);

▲ 0

Нужно пробежаться по массиву циклом forEach (или на ваш выбор), создать функцию которая вернет массив с игроками каждой команды (для легкости понимания кода) и перебрать массив с игроками.

const clubs = [
  {
    _id: "63ce4976d52b8e0552f39645",
    name: 'Спартак',
    competition: {
      date: '15.01.2023',
      matches: [
        {
          number: 1,
          name: 'Спартак-Динамо',
          players: [
            { fio: 'Потапов К.С.', goalcount: 0 },
            { fio: 'Бочаров М.П.', goalcount: 1 },
            { fio: 'Петров А.И.', goalcount: 0 },
            { fio: 'Сергеев К.О.', goalcount: 2 },
            { fio: 'Любимов И.А.', goalcount: 0 }
          ]
        },
        {
          number: 2,
          name: 'Спартак-Урал',
          players: [
            { fio: 'Потапов К.С.', goalcount: 1 },
            { fio: 'Бочаров М.П.', goalcount: 0 },
            { fio: 'Петров А.И.', goalcount: 1 },
            { fio: 'Сергеев К.О.', goalcount: 0 },
            { fio: 'Ковалёв М.А.', goalcount: 2 }
          ]
        }
      ]
    }
  },
  {
    _id: "63ce4976d52b8e0552f39646",
    name: 'Рубин',
    competition: {
      date: '10.01.2023',
      matches: [
        {
          number: 1,
          name: 'Рубин-Ростов',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 3 },
            { fio: 'Бродский К.И.', goalcount: 0 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А.', goalcount: 1 }
          ]
        },
        {
          number: 2,
          name: 'Рубин-Краснодар',
          players: [
            { fio: 'Бородаев И.С.', goalcount: 0 },
            { fio: 'Шевчук М.А.', goalcount: 1 },
            { fio: 'Громилов А.П.', goalcount: 4 },
            { fio: 'Потапов К.И.', goalcount: 0 },
            { fio: 'Михайлов Г.А', goalcount: 0 }
          ]
        }
      ]
    }
  }
];

clubs.forEach(club => {
  let info = getClubInfo(club)
  
  info.forEach(players => {
    players.forEach(player => {
      console.log(player.name, player.club)
    })
  })
})

function getClubInfo(club) {
  let res = [];
  
  club.competition.matches.forEach((info, index) => {
    let player = [];
    
    info.players.forEach(el => { 
      player.push(
        {
          name: el.fio, 
          club: info.name,
        }
      )
    })
    
    res[index] = player;
  })  
 
  return res;
}