Показать сообщение отдельно
  #1 (permalink)  
Старый 17.01.2019, 18:33
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Как правильно заполнить массив данными (native javascript)?
Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу. У меня есть некая структура данных.
const data = [
  {
    locations: [
      {
        locationId: 0,
        players: [
          {
            holes: [
              {
                holeId: 1,
                score: 5
              },
              {
                holeId: 2,
                score: 5
              },
              {
                holeId: 3,
                score: 5
              },
              {
                holeId: 4,
                score: 5
              }
            ],
            firstName: "firstName 1",
            lastName: "lastName 1"
          },
          {
            holes: [
              {
                holeId: 1,
                score: 5
              },
              {
                holeId: 2,
                score: 5
              }
            ],
            firstName: "firstName 2",
            lastName: "lastName 2"
          },
          {
            holes: [
              {
                holeId: 1,
                score: 5
              }
            ],
            firstName: "firstName 3",
            lastName: "lastName 3"
          }
        ]
      }
    ]
  }
]

const players = data[0].locations[0].players;

players.forEach((item) => {
  console.log(item.holes);
  // [{...}, {...}, {...}, {...}]
  // 0: {holeId: 1, score: 5]
  // 1: {holeId: 2, score: 5]
  // 2: {holeId: 3, score: 5]
  // 3: {holeId: 4, score: 5]

  // [{...}, {...}]
  // 0: {holeId: 1, score: 5]
  // 1: {holeId: 2, score: 5]

  // [{...}]
  // 0: {holeId: 1, score: 5]
});

Мне необходимо сделать следующее: players может быть любое количество, и длина массива item.holes может быть различная. Мне необходимо, чтобы в массивы ориентировались по самому большому, и в случае, если их длина меньше, они заполнялись по следующему принципу. Например, у самого большого массива длина 4:
// [{...}, {...}, {...}, {...}]
// 0: {holeId: 1, score: 5]
// 1: {holeId: 2, score: 5]
// 2: {holeId: 3, score: 5]
// 3: {holeId: 4, score: 5]
А у остальных меньше, и необходимо, чтобы произошло следующее заполнение:
// например array номер 2
// [{...},{...}] // его длина изначально
// после преобразований
// 0: {holeId: 1, score: 5]
// 0: {holeId: 2, score: 5]
// 2: {score: '-']
// 3: { score: '-']

// например array номер 3
// [{...}] // его длина изначально
// после преобразований
// 0: {holeId: 1, score: 5]
// 1: {score: '-']
// 2: {score: '-']
// 3: { score: '-']
Ответить с цитированием