Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将组添加到包含超过82条记录的交叉筛选器中会耗尽内存_Javascript_Crossfilter - Fatal编程技术网

Javascript 将组添加到包含超过82条记录的交叉筛选器中会耗尽内存

Javascript 将组添加到包含超过82条记录的交叉筛选器中会耗尽内存,javascript,crossfilter,Javascript,Crossfilter,我使用crossfilter来驱动一些带有dc.js的图表,但是当处理更多的82条记录时,我的内存崩溃了 我的记录是一组对象,如下所示: { "date": Thu May 24 2018 11:29:27 GMT+0100 (GMT Daylight Time), "recipients": ["name1", "name2"], "text": "Lorem ipsum dolor sit amet" } var ndx = crossfilter(items) this.di

我使用crossfilter来驱动一些带有
dc.js
的图表,但是当处理更多的82条记录时,我的内存崩溃了

我的记录是一组对象,如下所示:

{
  "date": Thu May 24 2018 11:29:27 GMT+0100 (GMT Daylight Time),
  "recipients": ["name1", "name2"],
  "text": "Lorem ipsum dolor sit amet"
}
var ndx = crossfilter(items)
this.displayItems = ndx.allFiltered()
var dateDimension = ndx.dimension(d => d.date)
var dayHourDimension = ndx.dimension(d => [d.date.getDay(), d.date.getHours()])

// by day
var detailGroup = dateDimension.group(d => {
  if (d) { // Chrome identifies this line as causing the out of memory crash
    return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())
  }
})
// by month
var overviewGroup = dateDimension.group(d => {
  if (d) {
    return new Date(d.getUTCFullYear(), d.getUTCMonth())
  }
})

var heatMapGroup = dayHourDimension.group().reduceSum(d => 1)
我正在执行如下数据的初始加载:

{
  "date": Thu May 24 2018 11:29:27 GMT+0100 (GMT Daylight Time),
  "recipients": ["name1", "name2"],
  "text": "Lorem ipsum dolor sit amet"
}
var ndx = crossfilter(items)
this.displayItems = ndx.allFiltered()
var dateDimension = ndx.dimension(d => d.date)
var dayHourDimension = ndx.dimension(d => [d.date.getDay(), d.date.getHours()])

// by day
var detailGroup = dateDimension.group(d => {
  if (d) { // Chrome identifies this line as causing the out of memory crash
    return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())
  }
})
// by month
var overviewGroup = dateDimension.group(d => {
  if (d) {
    return new Date(d.getUTCFullYear(), d.getUTCMonth())
  }
})

var heatMapGroup = dayHourDimension.group().reduceSum(d => 1)

我在我的代码中标记了Chrome在崩溃发生之前中断的点,通过调用堆栈查看,它位于crossfilter源代码中,新值被添加到组中(注意,我使用的是v1.4.5)。Edge和Firefox中超过82条记录也会发生同样的崩溃。我试着将记录中的数据缩减到日期,但这没有什么区别。显然,我希望能够处理超过82条记录,那么有人知道我能做些什么来解决这个问题吗?

对此应该有一个公认的答案。OP自己设法找出了问题评论中的错误


这里的解决方案是确保crossfilter获得100%的完美数据。CSV中没有空行,JavaScript对象中没有空白属性,诸如此类。

您可以共享错误消息和/或数据吗?我猜第83条记录的日期字段是空的,这会导致日期维度的顺序不正确,因此会出现堆栈溢出错误。嗯,好主意,我来看看。Chrome本身并没有错误消息,只是识别出执行该行会导致内存错误并停止执行脚本。这很奇怪。如果你能提供娱乐指导,我想看看问题所在。啊,你是对的,这是数据!我已经过滤掉了错误的数据,一切都很好。我们通常处理这个问题的方法是确保维度访问永远不会返回null/未定义的值。不可否认,这对于日期和数字来说有点困难,因为你必须想出一个“空白”日期,这并不总是现实的。