#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». Затем мы выполняем итерацию еще раз.