как преобразовать объект объектов в объект массива объектов js - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время я работаю над проектом react-native, который включает экран календаря. Я использую компонент повестки дня react-native calendars для самого календаря и базу данных firebase реального времени для самого проекта. Я новичок в создании собственной базы данных, так что не могу правильно понять структуру данных. В настоящее время из базы данных я получаю данные как

{
'2020-07-01': {time: "12:00", topic: "Type Casting in JavaScript"}
'2020-07-03': {time: "12:00", topic: "JavaScript basics"}
'2020-07-06': {time: "12:00", topic: "Parallax Scrolling"}
}

, но повестка дня остальных календарей принимает данные только в форме

{
'2020-07-01': [{time: "12:00", topic: "Type Casting in JavaScript"}]
'2020-07-03': [{time: "12:00", topic: "JavaScript basics"}]
'2020-07-06': [{time: "12:00", topic: "Parallax Scrolling"}]
}

, что было бы лучшим способом преобразования выход?

Ответы [ 4 ]

0 голосов
/ 09 июля 2020

Напишите функцию для преобразования данных в нужную вам структуру.

const dataToTransform = {
'2020-07-01': {time: "12:00", topic: "Type Casting in JavaScript"},
'2020-07-03': {time: "12:00", topic: "JavaScript basics"},
'2020-07-06': {time: "12:00", topic: "Parallax Scrolling"}
}

const transformData = (input) => {
  const output = {} // object to return with transformed data
  Object.keys(input).forEach( key => {
    output[key] = [input[key]] // do whatever transformation here 
                               // for each key/value pair
  })
  return output
}

const transformedData = transformData(dataToTransform)

const pre = document.getElementById('display')
pre.textContent = JSON.stringify(transformedData)
console.log(transformedData)


Обратите внимание, что существует множество способов реализации transformData. Это всего лишь один пример.

0 голосов
/ 09 июля 2020
const OBJECT = {
'2020-07-01': {time: "12:00", topic: "Type Casting in JavaScript"},
'2020-07-03': {time: "12:00", topic: "JavaScript basics"},
'2020-07-06': {time: "12:00", topic: "Parallax Scrolling"},
};

console.log(
    Object.fromEntries(Object.entries(OBJECT).map(([key, val]) => [key, [val]]))
);

Вот рабочее решение

0 голосов
/ 09 июля 2020

Использование reduce:

const data = {
'2020-07-01': {time: "12:00", topic: "Type Casting in JavaScript"},
'2020-07-03': {time: "12:00", topic: "JavaScript basics"},
'2020-07-06': {time: "12:00", topic: "Parallax Scrolling"}
}

const normalized = Object.keys(data).reduce( (acc, key) => {
  acc[key] = [data[key]]
  
  return acc
}, {})

console.log(normalized)
0 голосов
/ 09 июля 2020

const obj = {
'2020-07-01': {time: "12:00", topic: "Type Casting in JavaScript"},
'2020-07-03': {time: "12:00", topic: "JavaScript basics"},
'2020-07-06': {time: "12:00", topic: "Parallax Scrolling"}
}

const transformed = {};
for (const date in obj) {
  transformed[date] = [obj[date]]
}
console.log(transformed)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...