使用 sum 函数时如何处理 Store 中的空值

Posted

技术标签:

【中文标题】使用 sum 函数时如何处理 Store 中的空值【英文标题】:How to deal with null values in a Store when using the sum function 【发布时间】:2013-05-17 12:10:50 【问题描述】:

我需要对存储的字段值的值和总和进行分组。对值求和时,我得到的是 NaN。我从 json 响应中得到空值。谁能告诉我如何在 extjs 中用 0 替换 null ?在对字段值求和时,还有其他方法可以避免 Nan 吗?

clientDistributionStore.group(groupField);
curJANObj= clientDistributionStore.sum('curJAN',true);

我得到一些 'curJAN' 值的空值,所以我得到 Nan 错误

【问题讨论】:

【参考方案1】:

我通过 record.set 功能将值设置为 0 为 null

【讨论】:

【参考方案2】:

另一种选择是向您的模型添加一个新的“已转换”(我更愿意称其为“计算”)字段:

fields: [
   name: 'curJan', type: 'int' ,
    
     name: 'curJanNotNull', type: 'int',
     convert: function(val, row) 
       return row.curJan !== null ? row.curJan : 0;
       
  
]

...

var janSum = clientDistributionStore.sum('curJanNotNull', true);

【讨论】:

【参考方案3】:

我有类似的问题。我是这样解决的。

clientDistributionStore.group(Ext.create('Ext.util.Grouper', 
    property: groupField,
    getGroupString: function (instance) 
        return instance.get(this.property) || 0;
    
));

curJANObj= clientDistributionStore.sum('curJAN',true); // return ex. 0: 100, 'John Smith': 1000

getGroupString 函数可以通过其他方式实现,因为现在它也将空字符串视为 0。您可以根据自己的需要对其进行修改,但不能返回 null 值。

它适用于 ExtJS 4.2.1

【讨论】:

以上是关于使用 sum 函数时如何处理 Store 中的空值的主要内容,如果未能解决你的问题,请参考以下文章

当数据库为表中的一列返回空值时如何处理错误

使用 protobuf-net 序列化数组时如何处理空值?

如何处理 JsonConvert.DeserializeObject 中的空值/空值

从 Spark 写入镶木地板时如何处理空值

我有一个分类项目,其中一些列/特征具有超过 90% 的空值。我该如何处理它们?

使用交叉熵时如何处理 log(0)