0

下面是我用来获取特定的聚合总计数的代码子句条件。我一开始是,获取具有筛选条件的所有记录,然后基于子句列,我逐列获取该组中每个不同值的计数。

所有记录过滤器(函数(r){return r[groupByCondition.column]==groupByConment.value;}).长度;

如果按列分组具有数值。当分组依据列包含字符时,它不会获取合计计数。

在此方面任何帮助都将不胜感激。

12
  • 你能提供两个例子吗,一个有数值,一个没有。我不一定能理解你的意思。谢谢。 评论 2017年2月3日8:19
  • 内部过滤器函数“3”和3不同,您需要解析Int(val,10) 评论 2017年2月3日8:22
  • return r[groupByCondition.column].toString()==groupByCondition.value.toString();(它们可能不是整数) 评论 2017年2月3日8:24
  • 你是说如果r[groupByCondition.column]返回数值?
    – 马尔曼
    评论 2017年2月3日8:28
  • 或者只是return+r[groupByCondition.column]===+groupByConment.value;只要它们是数字(并且应该是数字) 评论 2017年2月3日8:34

2个答案2

重置为默认值
0

使用解析Int/解析浮点将字符串转换为数字

return parseInt(r[groupByCondition.column])==parseInt(groupByConment.value);
1
  • 他使用“==”而不是“===”,因此“3”==3解析为true。有鉴于此,你的答案如何能解决这个问题?
    – 马尔曼
    评论 2017年2月3日8:30
0

问题是按条件分组.列groupByCondition.value(按条件分组)期望一个对象,例如groupByCondition={“column”:“col1”,“value”:“abc”}但你的方式不同groupByCondition={“col1”:“abc”}.

您可以更改按条件分组对象以适应您以后访问它的方式:

所有记录=[{“col1”:“abc”,“col2”:“xyz”},{“col1”:”cde“,”col2“:”zxy“},}“coll”:“1”,“col2”:”bit“}、{“ol1”:1,“col”:“byte”}];功能过滤器记录(条件){结果=allRecords.filter(函数(r){return r[condition.column]==条件值;});console.log('按'+JSON.stringify(condition)+'过滤的结果是');console.log(结果);返回结果;}结果=过滤记录({“column”:“col1”,“value”:“abc”});结果=过滤记录({“column”:“col1”,“value”:“cde”});结果=筛选记录({“column”:“col1”,“value”:“1”});结果=filterRecords({“column”:“col1”,“value”:1});

或者,您可以更改访问它的方式以适应条件对象:

allRecords=[{“col1”:“abc”,“col2”:“xyz”},{“col1”:“cde”,“col2”:“zxy”},{“col1”:“1”,“col2”:“bit”},{“col1”:1,“col2”:“byte”}];功能过滤器记录(条件){key=对象.keys(条件)[0];结果=allRecords.filter(函数(r){返回r[key]==条件[key];});console.log('按'+JSON.stringify(condition)+'过滤的结果是');console.log(结果);返回结果;}结果=过滤记录({“col1”:“abc”});结果=过滤记录({“col1”:“cde”});result=filterRecords({“col1”:1});结果=过滤记录({“col1”:“1”});

这两个示例都假设您只根据1个列/属性的值筛选记录。如果你想根据多个标准过滤它们,你需要额外的工作。

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.