#javascript #json
Вопрос:
Как вы можете видеть, теперь у меня есть несколько объектов после преобразования этого в массив и наличия всех этих внутри массива, что я хочу сделать, это получить новый массив, который должен иметь имя капитана и все оценки с круглым числом в объекте, и все эти объекты должны быть сохранены таким образом в массиве. Представление о том, чего я хочу достичь, было бы примерно таким [{captain:'John Doe',RoundNumber:Score},{captain:'John Doe',RoundNumber:Score},{captain:'JohnDoe',RoundNumber:Score}]
это результат, которого я пытаюсь достичь, некоторая помощь или рекомендации были бы очень признательны, ниже приведены данные
"-MXePKlz_DH8qqrIyesI" : {
"game_name" : "test101",
"players_info" : {
"captain" : "john",
"stage_name" : "fun fin fo",
"team_members" : "John,Jane,jaden"
},
"response" : "this is one response",
"round_num" : "1",
"score" : "1"
},
"-MXePV53h9yol1UcLd8v" : {
"game_name" : "test101",
"players_info" : {
"captain" : "Hamza",
"stage_name" : "dssd",
"team_members" : "01,02,03,05"
},
"response" : "another test response....!!!",
"round_num" : "1",
"score" : "0"
},
"-MXeiS_NOtxh3zSsG5sy" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "B",
"stage_name" : "baj",
"team_members" : "S"
},
"response" : "He is just gorgeous ",
"round_num" : "1",
"score" : "6"
},
"-MXeiTyNgMrIPKy2V_GG" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "Mo",
"stage_name" : "fun fin fo",
"team_members" : "Its Just Me and myself :)"
},
"response" : "Thats the same joke we had last week",
"round_num" : "1",
"score" : "4"
},
"-MXeiUGSqOvJdhHh64Vl" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "Schmed",
"captain_email" : "SchmedtheEd@gmail.com",
"stage_name" : "Schmed",
"team_members" : "Schmed, Ed, Ted, Fred"
},
"response" : "Beard",
"round_num" : "1",
"score" : "2"
}
}```
Комментарии:
1. где ваш код?
2. это запутано, я пытался добиться этого с помощью вложенных циклов, которые не сработали, я могу вставить это в новый массив, но опять же есть много объектов с одинаковым именем капитана, разным индексом и другим круглым номером, так что даже если я перенесу это в новый массив, поэтому, когда одно и то же имя капитана появляется в другом индексе, как мне добавить круглое число и счет к этому предыдущему объекту. Я пробовал несколько решений, поэтому сейчас у меня нет ни одного надежного, так что это все, что я сейчас имею в виду.
3. @MuhammadHamza сработал ли для вас приведенный ниже ответ ?
4. нет, сэр, это не позволило мне объяснить один раз, чтобы вы могли лучше понять, допустим, у меня есть эти объекты, которые я разместил выше, поэтому у каждого объекта будет свой индекс, но не у всех будет другой капитан, поэтому я хочу создать новый массив, в котором теперь должны быть объекты, в каждом объекте он должен содержать имя капитана и оценки, собранные со всех других объектов, у которых одно и то же имя капитана, а затем то же самое для следующего, пока у меня не будет массива, содержащего каждый объект с именем капитана и все оценки из раунда, которые были у одного капитана, чтобы я мог отображать по имени капитана.
5. @MuhammadHamza Я обновил свой ответ, надеюсь, это то, что вы ищете?
Ответ №1:
Я бы сказал, сохраните свои данные в качестве объекта и сделайте следующее: Здесь у меня есть игрок: джон, указанный дважды с 2 баллами, первый 1 и второй 3. В результате Джон должен быть указан один раз с общим счетом 4.
var myData = {
"-MXePKlz_DH8qqrIyesI": {
"game_name": "test101",
"players_info" : {
"captain" : "john",
"stage_name" : "fun fin fo",
"team_members" : "John,Jane,jaden"
},
"response" : "this is one response",
"round_num" : "1",
"score" : "1"
},
"-MXePKlz_DH8qqrIyes55": {
"game_name": "test101",
"players_info" : {
"captain" : "john",
"stage_name" : "fun fin fo",
"team_members" : "John,Jane,jaden"
},
"response" : "this is one response",
"round_num" : "1",
"score" : "3"
},
"-MXePV53h9yol1UcLd8v" : {
"game_name" : "test101",
"players_info" : {
"captain" : "Hamza",
"stage_name" : "dssd",
"team_members" : "01,02,03,05"
},
"response" : "another test response....!!!",
"round_num" : "1",
"score" : "0"
},
"-MXeiS_NOtxh3zSsG5sy" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "B",
"stage_name" : "baj",
"team_members" : "S"
},
"response" : "He is just gorgeous ",
"round_num" : "1",
"score" : "6"
},
"-MXeiTyNgMrIPKy2V_GG" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "Mo",
"stage_name" : "fun fin fo",
"team_members" : "Its Just Me and myself :)"
},
"response" : "Thats the same joke we had last week",
"round_num" : "1",
"score" : "4"
},
"-MXeiUGSqOvJdhHh64Vl" : {
"game_name" : "mtest",
"players_info" : {
"captain" : "Schmed",
"captain_email" : "SchmedtheEd@gmail.com",
"stage_name" : "Schmed",
"team_members" : "Schmed, Ed, Ted, Fred"
},
"response" : "Beard",
"round_num" : "1",
"score" : "2"
}
}
var myNewArray = [];
for (const [key, value] of Object.entries(myData)) {
let player = myNewArray.find( e => e.captain === value.players_info.captain );
if (player) {
player.RoundNumber = Number(player.RoundNumber) Number(value.score);
} else {
myNewArray.push({
captain: value.players_info.captain,
RoundNumber: value.score
});
}
}
console.log(myNewArray);
Комментарии:
1. Большое вам спасибо, сэр!
2. @MuhammadHamza не могли бы вы, пожалуйста, отметить его как правильный ответ, чтобы другие люди тоже могли его использовать ?