переберите массив внутри массива и отобразите playerId, playerName и playerCategory - PullRequest
2 голосов
/ 24 апреля 2019

обновление 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);

Update2:

  • теперь мои данные перемещаются в массив 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"
}

update1:

  • предположим, что если у нас больше массивов внутри массива, можем ли мы выполнять итерацию без указания индекса.
  • Пожалуйста, дайте мне знать, так как это поможет мне во время сложных данных
{
            "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"
        }
  • Я пытаюсь перебрать массив внутри массива и отобразить playerId, playerName и playerCategory.
  • когда я делаю первую карту, я получаю значение в
    console.log('bunessEntityProvidersValues values ---->', bunessEntityProvidersValues);
  • но когда я делаю следующую карту внутри массива, я получаю неопределенное значение. console.log('combinedEntityProvidersValues values ---->', combinedEntityProvidersValues);
  • Подскажите, как это исправить, используя метод карты
  • Я отладил, но все равно не могу выяснить.

образец данных:

{
            "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"
        }

фрагмент кода:

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 Ответ

3 голосов
/ 24 апреля 2019

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

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

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);

РЕДАКТИРОВАТЬ: Это, как мы можем решить проблему из ваших обновленных данных. В основном, мы используем синтаксис распространения для выполнения деструктуризации объекта . Сначала мы удаляем нежелательные свойства, такие как 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);
...