Return Not Rendering при установке Object = [], работает при установке Object = {} - PullRequest
0 голосов
/ 09 января 2020

Я форматирую свои данные так, чтобы они выглядели как results

Когда я использую set var results = {}, результат выводится при рендеринге, однако, если установить var results = [] в массив, он НЕ возвращается рендер. Я вижу это в журнале консоли, но не на рендере.

Вот CodeSandBox, с которым можно поиграться с

https://codesandbox.io/s/blue-fire-x52qb

var results = {}

dates.forEach(function(item) {
  var arrayOfEvents = [];

  arrayOfObjects.forEach(function(value) {
    if (item === value.info.startDate) {
      // Found a match...
      arrayOfEvents.push(value);
    }   
  })

  if (typeof results["d" + item.date] == "undefined") {
    results["d" + item] = {
      date: item,
      events: arrayOfEvents
    };
  }

});

{JSON.stringify(results, null, 4)}

Массив

var dates = 
[
"01-06-2020",
"01-07-2020",
"01-08-2020",
"01-10-2020",
"02-04-2020"
]

Массив объектов

var arrayOfObjects =
[
{
    "title": "Group President",
    "id": "TpNY1SU_",
    "info": {
        "startDate": "01-06-2020"
    }
},
{
    "title": "TEST",
    "id": "cEpPxopz",
    "info": {
        "startDate": "01-07-2020"
    }
},
{
    "title": "Example",
    "id": "jnTMr_r7",
    "info": {
        "startDate": "01-07-2020"
    }
},
]

Желаемый (не рабочий результат) получение [] при установке results = []

results = [
"d01-06-2020": {
    "date": "01-06-2020",
    "events": [
        {
            "title": "Group President",
            "id": "TpNY1SU_",
            "info": {
                "startDate": "01-06-2020"
            }
        }
    ]
},
"d01-07-2020": {
    "date": "01-07-2020",
    "events": [
        {
            "title": "TEST",
            "id": "cEpPxopz",
            "info": {
                "startDate": "01-07-2020"
            }
        },
        {
            "title": "Example",
            "id": "jnTMr_r7",
            "info": {
                "startDate": "01-07-2020"
            }
        }
    ]
},
]

Рабочий результат при настройка results = {}

results =  {
"d01-06-2020": {
    "date": "01-06-2020",
    "events": [
        {
            "title": "Group President",
            "id": "TpNY1SU_",
            "info": {
                "startDate": "01-06-2020"
            }
        }
    ]
},
"d01-07-2020": {
    "date": "01-07-2020",
    "events": [
        {
            "title": "TEST",
            "id": "cEpPxopz",
            "info": {
                "startDate": "01-07-2020"
            }
        },
        {
            "title": "Example",
            "id": "jnTMr_r7",
            "info": {
                "startDate": "01-07-2020"
            }
        }
    ]
},
}

1 Ответ

0 голосов
/ 09 января 2020

Поскольку это данные пары «ключ-значение», лучше сохранять данные в объекте и использовать Object.values, Object.keys или Object.entries в соответствии с вашими требованиями.

Вот решение с использованием Es6 flat() и Object.values

results = {
"d01-06-2020": {
    "date": "01-06-2020",
    "events": [
        {
            "title": "Group President",
            "id": "TpNY1SU_",
            "info": {
                "startDate": "Mon Jan 06 2020 14:03:03 GMT-0500 (Eastern Standard Time)"
            }
        }
    ]
},
"d01-07-2020": {
    "date": "01-07-2020",
    "events": [
        {
            "title": "TEST",
            "id": "cEpPxopz",
            "info": {
                "startDate": "Tue Jan 07 2020 11:16:52 GMT-0500 (Eastern Standard Time)"
            }
        },
        {
            "title": "Example",
            "id": "jnTMr_r7",
            "info": {
                "startDate": "Tue Jan 07 2020 11:22:24 GMT-0500 (Eastern Standard Time)"
            }
        }
    ]
},
}
let res = Object.values(results).map(a=>a.events);
let dates = res.flat().map(a=>a.info.startDate);

console.log(dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...