Преобразование массива Javascript в объект - PullRequest
0 голосов
/ 07 мая 2018

Пожалуйста, посоветуйте, как мы можем преобразовать приведенный ниже массив объектов в объект, указанный с помощью сценария typescript / java:

[
  {
    "name": "Alex",
    "edu": [
      {
        "degree": "Grad",
        "year": 2007
      },
      {
        "degree": "Undergrad",
        "year": 2005
      }
    ]
  },
  {
    "name": "Ali",
    "edu": [
      {
        "degree": "Grad",
        "year": 2010
      },
      {
        "degree": "UnderGrad",
        "year": 2008
      }
    ]
  },
  {
    "name": "Nik",
    "edu": [
      {
        "degree": "Grad",
        "year": 2009
      },
      {
        "degree": "UnderGrad",
        "year": 2007
      }
    ]
  }
]

Кому:

[   { name: "Alex", Grad: 2007, Undergrad: 2005 },
    { name: "Ali", Grad: 2010, Undergrad: 2008 },
    { name: "Nik", Grad: 2009, Undergrad: 2007 }

];

Помогите, пожалуйста, преобразовать объект с помощью оператора распространения или любого другого. Спасибо!

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать .map() и .reduce() методы:

let data = [{"name": "Alex","edu": [{"degree": "PhD","year": 2012},{"degree": "Grad","year": 2007},{"degree": "Undergrad","year": 2005}]},{"name": "Ali","edu": [{"degree": "Masters","year": 2012},{"degree": "Grad","year": 2010}]},{"name": "Nik","edu": [{"degree": "Masters","year": 2011},{"degree": "Grad","year": 2009}]}];

let result = data.map(
               o => Object.assign(
                 {name: o['name']},
                 o['edu'].reduce((a, c) => (a[c['degree']] = c['year'], a), {})
               )
             );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...