【发布时间】:2019-01-04 05:55:06
【问题描述】:
我将日期存储在 indexedDB 数据库中,我想计算 2018 年、2017 年等发生的记录数并将它们打印在表格中。我遇到的问题是我不确定如何根据以前的记录检查日期以干净地计算它们。它相当于一个 count where function is SQL。
起初,我有类似的东西,但我不确定它是否会起作用。日期的存储方式像“2018 年 1 月 5 日星期三”,因此使用了 Slice() 方法。
var cursor = event.target.result;
//2016
firstPostYear = cursor.value.date.slice(-4);
alert(firstPostYear);
var count = 0;
if (cursor)
{
if (cursor.value.date.slice(-4) === firstPostYear)
{
count += 1;
}
else
{
console.log(count);
count = 0;
firstPostYear = cursor.value.date.slice(-4)
}
cursor.continue()
}
如果有人能告诉我一个更简单的方法来做到这一点,我将不胜感激。
这是给瑞恩的:
function filterSelection(filter)
{
var objectStore = db.transaction('posts').objectStore('posts');
objectStore.openCursor().onsuccess = function (event)
{
var cursor = event.target.result;
if (filter === "all")
{
//Get the number of all time posts
var transaction = db.transaction(['posts'], 'readonly');
var objectStore = transaction.objectStore('posts');
var countRequest = objectStore.count();
countRequest.onsuccess = function()
{
// Get table element
var table = document.getElementById("activityLog");
//Get table length
var rowCount = table.rows.length;
// Create a table row
var row = table.insertRow(rowCount);
// Insert new cells positions 1-5 of the "new" <tr> element:
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
// Add some text to the new cells:
cell1.innerHTML = "All time";
cell2.innerHTML = countRequest.result;
}
}
else if (filter === "Years")
{
//Get the number of posts each year
var cursor = event.target.result;
var counts = {};
if (cursor)
{
const year = cursor.value.date.slice(-4);
if ( !(year in counts) )
{
counts[year] = 0;
}
(counts[year]) + 1;
alert(counts[year]);
cursor.continue();
}
else
{
}
}
【问题讨论】:
标签: javascript local-storage indexeddb