首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript :在以后计算的函数中设置值

javascript :在以后计算的函数中设置值
EN

Stack Overflow用户
提问于 2015-12-23 10:44:22
回答 1查看 54关注 0票数 0

对不起,我不太清楚如何描述这个问题,这可能使我也找不到答案。

但从我的代码来看,这个问题应该可以理解。

第一件事是:代码可以工作,但我不喜欢我实现的解决方案,所以我想知道你们是否知道有更好的方法来实现同样的目标。

我创建了一种帮助函数来处理d3js中的滚动:

代码语言:javascript
复制
function puD3Rollup(data,keys,rollups)
{
  var nested_data = d3.nest();
  for (var k=0;k<keys.length;k++)
  nested_data= eval("nested_data.key(function(d) { return  d["+keys[k]+"];});");
  nested_data= nested_data.rollup(function(leaves) 
  { 
   var ret = {};
   for (var i=0;i<rollups.length;i++)
   {
     if (rollups[i].rollup==__stem.count) ret[rollups[i].name]= leaves.length;
     if (rollups[i].rollup==__stem.sum) ret[rollups[i].name]= d3.sum(leaves, function(d) {return parseFloat(d[rollups.column]);});
     if (rollups[i].rollup==__stem.avg) ret[rollups[i].name]= d3.mean(leaves, function(d) {return parseFloat(d[rollups.column]);});
     if (rollups[i].rollup==__stem.min) ret[rollups[i].name]= d3.min(leaves, function(d) {return parseFloat(d[rollups.column]);});
     if (rollups[i].rollup==__stem.max) ret[rollups[i].name]= d3.max(leaves, function(d) {return parseFloat(d[rollups.column]);});
 }    
 return ret;
 });
 return nested_data.entries(data);  
}

...and --我这样称呼这个函数(只是一个例子)

代码语言:javascript
复制
puD3Rollup(__team.data,[1],[{rollup:__stem.count,column:3,name:"pscount"}])

这需要:

-a数据数组(__team.data)

-specifies,我希望在位置1按列分组。

-finally将一个列定义为输出,该列是输入列3的汇总(计数),标签为"pscount“。

问题是关于那个古老的部分(我不喜欢)。一般情况下我会

代码语言:javascript
复制
nested_data= nested_data.key(function(d) { return  d[keys[k]];});

但是,由于我正在定义一个将在以后计算的函数,它将无法得到k的正确值,因此不能得到keysk的值。显然,将函数计算为文本,从而使keysk成为常量,是有效的。

但是,是否有更清洁的方法来实现这一点呢?我觉得一定有个小办法我错过了..。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 10:50:34

这里可能最简单的方法(假设IE9或更高版本,或其他浏览器)是用.forEach调用替换for循环:

代码语言:javascript
复制
keys.forEach(function(k) {
    nested_data = nested_data.key(function(d) {
        return d[k];
    });
    ...
})

回调的参数k现在在内部.key回调的作用域中被“绑定”,并在调用时保持正确的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34433870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档