Javascript 将日期用作带交叉筛选器的筛选器

Javascript 将日期用作带交叉筛选器的筛选器,javascript,crossfilter,Javascript,Crossfilter,我试图在一个非常大的数据集上使用JavaScript库。我已经简化了这个问题的数据 var tempArray=[ {“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”}, {“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”}, {“日期”:新日期(2013年6月),“数据值”:400,“col1

我试图在一个非常大的数据集上使用JavaScript库。我已经简化了这个问题的数据

var tempArray=[
{“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:400,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:600,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:600,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:600,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2013年6月),“数据值”:600,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:200,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:200,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:200,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:200,“col1”:“测试1”,“col2”:“比利回收集团”,“col3”:“比利回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:300,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:300,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:300,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”},
{“日期”:新日期(2014年6月),“数据值”:300,“col1”:“测试2”,“col2”:“詹姆斯回收集团”,“col3”:“詹姆斯回收集团-移动”}
]
//**********************************************************************************
//创建交叉过滤器
//**********************************************************************************
var数据=交叉过滤器(临时阵列);
//**********************************************************************************
//按公司名称获取维度
//**********************************************************************************
var dimensionByName=data.dimension(函数(d){return d.col1})
//**********************************************************************************
//按日期获取维度
//**********************************************************************************
var dimensionByDate=data.dimension(函数(d){return d.date})
//**********************************************************************************
//按可用于获取数据的公司名称划分的维度
//**********************************************************************************
var dim=data.dimension(函数(d){return d.col1})
dimensionByDate.filter(新日期(2014年6月))
var thisMonthMeasure=dim.group().reduceSum(函数(d){return d.dataval});
log('thisMonthMeasure',thisMonthMeasure.top(无限))
//**********************************************************************************
//清除数据过滤器
//**********************************************************************************
维度ByDate.filterAll();
dimensionByDate.filter(新日期(2013年6月))
var lastYearMeasure=dim.group().reduceSum(函数(d){return d.dataval});
console.log('lastYearMeasure',lastYearMeasure.top(无限))
问题是,我的代码将同一个数组打印到控制台两次,而不是两个不同的数组。这些值完全相同,因此结果如下:

thisMonthMeasure
等于
[{key:“Test 2”,value:3600},{key:“Test 1”,value:2400}]

lastYearMeasure
等于
[{key:“Test 2”,value:3600},{key:“Test 1”,value:2400}]

…而不是以下预期结果:

thisMonthMeasure
等于
[{key:“Test 2”,value:1200},{key:“Test 1”,value:800}]

lastYearMeasure
等于
[{key:“Test 2”,value:2400},{key:“Test 1”,value:1600}]

经过一些额外的测试,似乎我的日期过滤器不起作用

我应该如何按日期筛选


在我看来,数据中的“date”属性是一个字符串,但您试图使用date对象进行过滤。准确吗?我认为那行不通。也许试试

dimensionByDate.filter("2014-07-01T06:00:00.000Z");

不是这样。我实际上是在使用日期,但我更新了问题,使之更为明确。在将组写入控制台后,这些组将得到更新。如果你写下实际值,你会发现它们会改变:你实际上只需要一个组来做这件事——组值会随着你应用不同的过滤器而更新。谢谢你的帮助。这很有帮助。