@max_kruze

Как наполнить объект?

Есть такой условный массив массивов :
[
[
  'Spain',
  'football',
  'La Liga',
  'La Liga2',
  '100',
  'RealMadrid',
  'none',
  '10',
  '20',
  '30'
],
[
  'Spain',
  'football',
  'La Liga',
  'La Liga2',
  '100',
  'RealMadrid',
  'none',
  '10',
  '20',
  '30'
],
[
  'Spain',
  'football',
  'Bbva',
  'Bbva2',
  '110',
  'Barcelona',
  'none',
  '30',
  '40',
  '50'
],
[
  'Spain',
  'football',
  'EPL,
  'EPL2',
  '130',
  'none',
  'Alicante,
  '65',
  '75',
  '85'
],
[
  'Spain',
  'football',
  'Primera',
  'Segunda,
  '145',
  'none',
  'Getafe',
  '41',
  '51',
  '61'
] ,
[
  'Spain',
  'football',
  'Primera',
  'Segunda,
  '145',
  'none',
  'Getafe',
  '41',
  '51',
  '61'
] ,
[
  'Spain',
  'football',
  'EPL,
  'EPL2',
  '130',
  'none',
  'Alicante,
  '65',
  '75',
  '85'
],
['England' , ~] ,
['Sweden' , ~],

]


Есть возможность сделать только через forEach() и по итогу должен получится такой объект :
{ 'Spain' : { sport : football , 
 footblallTeam :  {'RealMadrid': {place : 10 , squad : 20 , peoples : 30} ,  'Barcelona' : {place : 30 , squad : 40 , peoples : 50}} ,
 basketballTeam : {'Alicante': {place : 65 , squad : 75 , peoples : 85} ,  'Getafe' : {place : 41 , squad : 51 , peoples : 61}} ,
 league : [{ firstleague : 'La Liga' ,  secondeleague : 'La Liga2' , ticket : 100} ,
               { firstleague : 'Bbva' ,  secondeleague : 'Bbva2' , ticket : 110} ,
               { firstleague : 'EPL' ,  secondeleague : 'EPL2' , ticket : 130} ,
               { firstleague : 'Primera' ,  secondeleague : 'Segunda' , ticket : 145} ]
} ,
  'England' : {} .
  'Sweden' : {}
}
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега JavaScript
max_kruze ты показывай код своих попыток преобразования, не стесняйся.
На текущий момент я вижу следующие проблемы:
1. Во входных данных отсутствует куча закрывающих кавычек, из-за чего код в принципе не работает.
2. Входные данные не консистентны - иногда название команды оказывается седьмым элементом в массиве, а иногда - шестым. Возможно есть и другие неконсистентные места.

После того как исправишь проблемы со входными данными, можно приступать к анализу выходных данных.
У тебя в результирующем объекте для каждой страны есть свойство "sport", хотя дальнейшая логика объекта подсказывает, что спортов может быть как минимум два.

В качестве аттракциона невиданной щедрости я дарю тебе кусок кода, который на 20% реализует функционал, но даёт ключ к пониманию механизма преобразования.
Код подразумевает что с проблемами входных данных ты сможешь разобраться самостоятельно

result = {}

info.forEach((team) => {
    const country = team[0]
    const sport = team[1]
    const title = team[6]
    const place = team[7]
    const squad = team[8]
    const peoples = team[9]
    
    if (!result.hasOwnProperty(country)) {
    	result[country] = {}
    }
    
    if (sport === 'football') {
    	if (!result[country].hasOwnProperty('footballTeam')) {
            result[country]['footballTeam'] = {}
            
            if (!result[country]['footballTeam'].hasOwnProperty(title)) {
            	result[country]['footballTeam'][title] = {}
            }
            
            result[country]['footballTeam'][title]['place'] = place
            result[country]['footballTeam'][title]['squad'] = squad
            result[country]['footballTeam'][title]['peoples'] = peoples
        }
    }    
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы