@AlexKindGeek

Как сделать нужный объект?

Всем привет. Есть у меня массив объектов по типу:
[
  {
    sessionInformation: [{id: 1, name: "Session first"}],
    packageInformation: [{user: "Pol", id: 2}]
  },
  {
    sessionInformation: [{id: 1, name: "Session second"}
  }, 
  {
    sessionInformation: [{id: 1, name: "Session second"}]
  }
]


Мне надо сделать:
{
  packageInformation: [{user: "Pol", id: 2}]
}


Если у нас 2 значение то конкатим:
2 value
[
  {
    sessionInformation: [{id: 1, name: "Session first"}],
    packageInformation: [{user: "Pol", id: 2}]
  },
  {
    sessionInformation: [{id: 1, name: "Session second"}
  }, 
  {
    packageInformation: [{user: "Mike", id: 3}]
    sessionInformation: [{id: 1, name: "Session second"}]
  }
]

Result:
{
  packageInformation: [{user: "Pol", id: 2}, {user: "Mike", id: 3}]
}

  • Вопрос задан
  • 105 просмотров
Решения вопроса 2
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
const data = [
  {
    sessionInformation: [{id: 1, name: "Session first"}],
    packageInformation: [{user: "Pol", id: 2}]
  },
  {
    sessionInformation: [{id: 1, name: "Session second"}]
  }, 
  {
    packageInformation: [{user: "Mike", id: 3}],
    sessionInformation: [{id: 1, name: "Session second"}]
  }
]
const filtered = [].concat(...data.map(o => {
	if (Array.isArray(o.packageInformation)) {
    return o.packageInformation
  }
  return []
}))

console.log({
	packageInformation: [].concat(...filtered)
})
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
function myFunc(carry, currentElem) {
	if (currentElem.packageInformation && currentElem.packageInformation[0]) {
  	carry.packageInformation.push(currentElem.packageInformation[0])
  }
  return carry
}

var processed1 = data1.reduce(myFunc, {packageInformation: []})
var processed2 = data2.reduce(myFunc, {packageInformation: []})


jsfiddle.net/az96o7y4
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы