Так что я не совсем знаю, как выглядит хранилище объектов, в котором хранятся эти данные, поэтому я мог бы сделать некоторые предположения относительно этого и того, что вы делаете.
Прежде всего, есть один лучший способ сделать то, что вы делаете, чем открыть курсор и пройтись по всему магазину. Если бы вы могли вообще реструктурировать свои данные, вы могли бы создать поле, в котором будет храниться год объекта, создать индекс для этого поля и, по сути, выполнить команду <ObjectStoreReference>.index('year').count()
, чтобы очень быстро получить все документы.
Но если вы не можете, то вам нужно сделать это таким образом. Однако то, как вы сейчас отслеживаете информацию, используя курсорный подход, не позволит вам распечатать все в таблице, потому что каждый раз, когда год, который вы генерируете из cursor.value.date.slice(-4)
, меняется с вашего firstPostYear
, вы сбрасываете счет.
Вы можете попробовать сделать что-то вроде
const counts = {};
if (cursor) {
const year = cursor.value.date.slice(-4);
if ( !(year in counts) ) {
counts[year] = 0;
}
counts[year]++;
cursor.continue();
}
И затем вы можете циклически перебирать записи в объекте и распечатывать каждый год и его количество, сколько хотите.