итерация массива внутри массива и отображение идентификатора игрока, имени игрока и категории игрока

#javascript #html #arrays #json #reactjs

#javascript #HTML #массивы #json #reactjs

Вопрос:

обновление 3:

нашел ответ после отладки. Предоставление решения ниже

 let values = {
  "sportsEntitties": [{
      "sportsEntityId": 30085585,
      "sportsEntityName": "490349903434903490",
      "sportsEntityStartDate": "7878787878",
      "sportsEntityEndDate": "erierioerioerioioe",
      "targetData": [{
          "playerName": "490349903434903490",
          "playerCategory": "hjuwerwewkwjke",
          "playerTaxId": "789347893489348934893489823",
          "relationshipStartDate": "2010-07-01"
        },
        {
          "playerName": "490349903434903490",
          "playerCategory": "hjuwerwewkwjke",
          "playerTaxId": "789347893489348934893489823",
          "relationshipStartDate": "2010-07-01"
        },
        {
          "playerName": "490349903434903490",
          "playerCategory": "hjuwerwewkwjke",
          "playerTaxId": "789347893489348934893489823",
          "relationshipStartDate": "2010-07-01"
        }
      ]
    },
    {
      "sportsEntityId": 30077252,
      "sportsEntityName": "uieruieuieruiuier",
      "sportsEntityStartDate": "7878787878",
      "sportsEntityEndDate": "erierioerioerioioe",
      "targetData": [{
          "playerId": 3478347834783478347878347834783478783484818,
          "playerName": "eruieruiiererui",
          "playerCategory": "uuiweruiwerweruiwfuiw",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "347834783478347834787834783478347878347-10-30"
        },
        {
          "playerId": 3478347834783478347878347834783478783493294,
          "playerName": "990we9090we90we90",
          "playerCategory": "uuiweruiwerweruiwfuiw",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "2010-06-30"
        },
        {
          "playerId": 3478347834783478347878347834783478783493779,
          "playerName": "uieruieuieruiuier",
          "playerCategory": "hjuwerwewkwjke",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "2010-07-01"
        }
      ]
    },
    {
      "sportsEntityId": 30085115,
      "sportsEntityName": "cvccvcvcvcvcv",
      "sportsEntityStartDate": "2010-06-30",
      "sportsEntityEndDate": "9999-12-31",
      "targetData": [{
        "playerId": 3478347834783478347878347834783478783493279,
        "playerName": "jkcvjkcdjkcvj",
        "playerCategory": "uuiweruiwerweruiwfuiw",
        "playerTaxId": "27-2695112",
        "relationshipStartDate": "2010-06-30"
      }]
    }

  ],
  "corporateEntityId": "wewewe",
  "corporateEntityName": "wewewewe"
}

let sportsExpnasionHeading = [];


sportsExpnasionHeading = values.sportsEntitties.map(obj => {
  return {
    sportsEntityName: obj.sportsEntityName,
    targetData: obj.targetData.map(obj =>
      ({
        label: `${obj.playerName} | ${obj.playerCategory}`,

        value: obj.playerTaxId,
        category: obj.playerCategory,
        checked: true
      })
    )
  }
});

console.log("sportsExpnasionHeading--->", sportsExpnasionHeading);
  

обновление2:

  • теперь мои данные перемещаются внутри массива targetData. итак, моя структура json изменилась.
  • Я использовал тот же код и повторил, но все еще не получил значение.
  • можете ли вы сказать мне, как получить PlayerName и playerCategory
 const results = Object.values(others).map(obj => {
            return obj[0].playerName   '|'   obj[0].playerCategory
        });

{
  "sportsEntitties": [
    {
      "sportsEntityId": 30085585,
      "sportsEntityName": "490349903434903490",
      "sportsEntityStartDate": "7878787878",
      "sportsEntityEndDate": "erierioerioerioioe",
      "targetData": [
        {
          "playerName": "490349903434903490",
          "playerCategory": "Group",
          "playerTaxId": "789347893489348934893489823",
          "relationshipStartDate": "2010-07-01"
        }
      ]
    },
    {
      "sportsEntityId": 30077252,
      "sportsEntityName": "uieruieuieruiuier",
      "sportsEntityStartDate": "7878787878",
      "sportsEntityEndDate": "erierioerioerioioe",
      "targetData": [
        {
          "playerId": 3478347834783478347878347834783478783484818,
          "playerName": "eruieruiiererui",
          "playerCategory": "Facility",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "347834783478347834787834783478347878347-10-30"
        },
        {
          "playerId": 3478347834783478347878347834783478783493294,
          "playerName": "990we9090we90we90",
          "playerCategory": "Facility",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "2010-06-30"
        },
        {
          "playerId": 3478347834783478347878347834783478783493779,
          "playerName": "uieruieuieruiuier",
          "playerCategory": "Group",
          "playerTaxId": "789347893489348934893489760",
          "relationshipStartDate": "2010-07-01"
        }
      ]
    },
    {
      "sportsEntityId": 30085115,
      "sportsEntityName": "cvccvcvcvcvcv",
      "sportsEntityStartDate": "2010-06-30",
      "sportsEntityEndDate": "9999-12-31",
      "targetData": [
        {
          "playerId": 3478347834783478347878347834783478783493279,
          "playerName": "jkcvjkcdjkcvj",
          "playerCategory": "Facility",
          "playerTaxId": "27-2695112",
          "relationshipStartDate": "2010-06-30"
        }
      ]
    }

  ],
  "corporateEntityId": "wewewe",
  "corporateEntityName": "wewewewe"
}
  

обновление1:

  • предположим, если у нас есть больше массивов внутри массива, можем ли мы выполнить итерацию без указания индекса.
  • Не могли бы вы, пожалуйста, сообщить мне, поскольку это поможет мне при обработке сложных данных
 {
            "sportsEntitties": [
                {
                    "sportsEntityId": 23232323,
                    "sportsEntityName": "wewewewewe",
                    "sportsEntityStartDate": "ewewwewewe",
                    "sportsEntityEndDate": "9999-12-31",
                    "bunessEntityProviders": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],
                    "fddfjkjkdfjkdf": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],
                    "a": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],
                    "bc": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],
                     "de": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],
                     "jkljkllk": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ],

                }
            ],
                "corporateEntityId": "2323232323",
                    "corporateEntityName": "ssdsdsd"
        }
  
  • I am trying to iterate an array inside an array and display the playerId, playerName and playerCategory.
  • when I do first map I am getting the value at
    console.log('bunessEntityProvidersValues values ---->', bunessEntityProvidersValues);
  • but when I do next map inside an array I am getting undefined.
    console.log('combinedEntityProvidersValues values ---->', combinedEntityProvidersValues);
  • can you tell me how to fix it using map method
  • I debugged but still I am not able to find out.

sample data:

 {
            "sportsEntitties": [
                {
                    "sportsEntityId": 23232323,
                    "sportsEntityName": "wewewewewe",
                    "sportsEntityStartDate": "ewewwewewe",
                    "sportsEntityEndDate": "9999-12-31",
                    "bunessEntityProviders": [
                        {
                            "playerId": 23232323232323,
                            "playerName": "sdssdsdsd",
                            "playerCategory": "Facility",
                            "playerTaxId": "3233223",
                            "relationshipStartDate": "sdsdsdsdsd"
                        }
                    ]
                }
            ],
                "corporateEntityId": "2323232323",
                    "corporateEntityName": "ssdsdsd"
        }
  

code snippet:

 let bunessEntityProvidersValues = [];
let combinedEntityProvidersValues; //= [];



bunessEntityProvidersValues = values.data.sportsEntitties.map(obj => {
    return obj.bunessEntityProviders
})
console.log('bunessEntityProvidersValues values ---->', bunessEntityProvidersValues);
combinedEntityProvidersValues = bunessEntityProvidersValues.map(obj => {
    return obj.playerName   '|'   obj.playerCategory
})
console.log('combinedEntityProvidersValues values ---->', combinedEntityProvidersValues);
  

Ответ №1:

Причина, по которой вы получаете [ 'undefined|undefined' ] для своего кода, заключается в том, что при повторном запуске values.data.sportsEntitties Array.map() фактически возвращает вам результаты в новом массиве, причем каждый элемент является результатом функции обратного вызова, которую вы передали. Таким образом, bunessEntityProvidersValues фактически это вложенный массив, поскольку вы специально возвращаете bunessEntityProviders , который содержит массив.

Вам просто нужно выбрать index 0 of bunessEntityProvidersValues , который является массивом array.

 const combinedEntityProvidersValues = bunessEntityProvidersValues[0].map(obj => {
  return obj.playerName   '|'   obj.playerCategory
});
  

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

 const values = {
  "sportsEntitties": [{
    "sportsEntityId": 23232323,
    "sportsEntityName": "wewewewewe",
    "sportsEntityStartDate": "ewewwewewe",
    "sportsEntityEndDate": "9999-12-31",
    "bunessEntityProviders": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }]
  }],
  "corporateEntityId": "2323232323",
  "corporateEntityName": "ssdsdsd"
}

const bunessEntityProvidersValues = values.sportsEntitties.map(obj => {
  return obj.bunessEntityProviders
});
//console.log(bunessEntityProvidersValues);

const combinedEntityProvidersValues = bunessEntityProvidersValues[0].map(obj => {
  return obj.playerName   '|'   obj.playerCategory
});
console.log(combinedEntityProvidersValues);  


РЕДАКТИРОВАТЬ: Вот как мы можем решить проблему на основе ваших обновленных данных. По сути, мы используем синтаксис spread для выполнения деструктурирования объекта. Сначала мы удаляем ненужные свойства, такие как sportsEntityId , sportsEntityName , sportsEntityStartDate , sportsEntityEndDate others и сохраняем остальное в новом объекте с именем, который называется.,,,,,,,,,,,,,.,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,, Затем мы выполняем итерацию по нему, чтобы напечатать требуемый результат.

 const values = {
  "sportsEntitties": [{
    "sportsEntityId": 23232323,
    "sportsEntityName": "wewewewewe",
    "sportsEntityStartDate": "ewewwewewe",
    "sportsEntityEndDate": "9999-12-31",
    "bunessEntityProviders": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],
    "fddfjkjkdfjkdf": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],
    "a": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],
    "bc": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],
    "de": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],
    "jkljkllk": [{
      "playerId": 23232323232323,
      "playerName": "sdssdsdsd",
      "playerCategory": "Facility",
      "playerTaxId": "3233223",
      "relationshipStartDate": "sdsdsdsdsd"
    }],

  }],
  "corporateEntityId": "2323232323",
  "corporateEntityName": "ssdsdsd"
}

const {
  sportsEntityId,
  sportsEntityName,
  sportsEntityStartDate,
  sportsEntityEndDate,
  ...others
} = values.sportsEntitties[0];

const results = Object.values(others).map(obj => {
  return obj[0].playerName   '|'   obj[0].playerCategory
});
/* 
const results = Object.values(others).map(list => {
  return list.map(obj => {
    return obj.playerName   '|'   obj.playerCategory
   })
}); 
*/

console.log(results);  

Комментарии:

1. — спасибо за ваш ответ, предположим, если у нас есть больше массивов внутри массива, можем ли мы выполнить итерацию без указания индекса, подобного [0]. — Не могли бы вы, пожалуйста, дать мне знать, так как это поможет мне при обработке сложных данных. Обновил вопрос сложными данными

2. Я просмотрел руководство по array.map, но не понял эту строку -> на самом деле она возвращает вам результаты в новом массиве, причем каждый элемент является результатом функции обратного вызова, которую вы передали можете ли вы рассказать мне в моем коде, что такое обратный вызов , можете ли вы объяснить, предоставив комментарии в коде

3. @zizi Да, определенно. Просто для проверки, вы хотите напечатать все obj.playerName и obj.playerCategory в своем конечном выводе, верно?

4. Кроме того, я видел ваши обновленные данные. Вы уверены, что это правильный вариант? Кажется, вы повторили bunessEntityProviders дважды. Кроме того, добавленные свойства a , bc и т.д. Являются отдельными свойствами.

5. Я думаю, что мы создадим копию исходного объекта и удалим «нежелательные» свойства, такие как «sportsEntityId», «sportsEntityName», «sportsEntityStartDate» и «sportsEntityEndDate». Затем мы выполняем итерацию еще раз.