当前位置: 首页 > 面试题库 >

JSON数据的JavaScript SUM和GROUP BY

轩辕奕
2023-03-14
问题内容

这是我对一些JSON数据对象进行JavaScript的首次尝试,并且需要一些建议以正确的方式实现我的目标。

一些服务器端代码实际上生成了我必须使用的JSON格式的字符串,并将其分配给字符串:

var dataString='$DATASTRING$';

但是在服务器替换其数据后,我必须使用的最终结果(当然没有\ r \ n):

var dataString='[ 
 { "category" : "Search Engines", "hits" : 5, "bytes" : 50189 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 17308 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 47412 },
 { "category" : "Search Engines", "hits" : 1, "bytes" : 7601 },
 { "category" : "Business", "hits" : 1, "bytes" : 2847 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 24210 },
 { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
 { "category" : "Search Engines", "hits" : 6, "bytes" : 613036 },
 { "category" : "Search Engines", "hits" : 1, "bytes" : 2858 } 
]';

然后,我可以将其更改为要使用的对象。

var dataObject=eval("("+dataString+")");

这使我可以访问数据的各行数据,但是我需要对这些值进行求和,分组和排序。

我需要这样的SQL语句:

SELECT category, sum(hits), sum(bytes) 
FROM dataObject
GROUP BY category
ORDER BY sum(bytes) DESC

我想要的输出将是这样的对象,我可以进一步处理:

var aggregatedObject='[ 
 { "category" : "Search Engines", "hits" : 13, "bytes" : 673684 },
 { "category" : "Content Server", "hits" : 3, "bytes" : 88930 },
 { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
 { "category" : "Business", "hits" : 1, "bytes" : 2847 } 
]';

…但是我不知道从哪里开始。

我可以遍历所有类别值,然后首先找到唯一的类别,然后再次循环并对命中和字节求和,然后再次进行排序,但是似乎必须有一种更简单的方法。

客户端页面上已经包含了prototype.js(1.7),但是如果需要的话,我可以添加Underscore,jQuery或其他一些小型库。

我只是不知道用最少的代码来处理查询的最佳,最简单,最小的方法是什么。

有什么建议?


问题答案:

您可以使用本机函数.reduce()汇总数据,然后按.sort()进行排序bytes

var result = dataObject.reduce(function(res, obj) {
    if (!(obj.category in res))
        res.__array.push(res[obj.category] = obj);
    else {
        res[obj.category].hits += obj.hits;
        res[obj.category].bytes += obj.bytes;
    }
    return res;
}, {__array:[]}).__array
                .sort(function(a,b) { return b.bytes - a.bytes; });

如果您支持较早的实现,则需要使用shim.reduce()



 类似资料:
  • 问题内容: 我有一个核心数据对象图(由通过多对多关系链接的两个实体组成)。 作为一个相对缺乏经验的iPhone开发人员,我很好奇,是否有人可以推荐一种方法以及适合iPhone的JSON实现,这将使我能够: 将核心数据记录转换为JSON字符串(以保持实体之间的关系);和 将JSON字符串转换回核心数据对象(再次保留实体之间的关系)。 在这一点上,我没有搜索到教程/代码示例,因此将不胜感激。 问题答案

  • 问题内容: 如何使用HttpURLConnection发布JSON数据?我正在尝试: 我在第14行中收到编译错误。 cURL请求为: 这是处理cURL请求的方法吗?任何信息对我都会非常有帮助。 谢谢。 问题答案: OutputStream希望使用字节,并且您要向其传递字符。试试这个:

  • 问题内容: 我正在尝试为请求和响应应用程序创建桌面客户端。 我能够轻松地执行GET请求。但是我想知道是否有人可以帮助我确定如何进行JSON请求和响应。并将其解析为字符串,从那里我可以锻炼如何将其全部切开 问题答案: Json.net在.net世界中无处不在。

  • 代码如下: 想要实现的是在页面展示 张三,晓明,晓明55, 需求是页面展示张三,晓明放在同一个页面上,晓明55,晓明556放在同一个页面上,因是接口返回很多json对象, 如果接口返回三个的接口 张三,晓明,放在同一个页面上,晓明一页, 还有一个排序升序功能 从小到大 请用es5语法写 展示的页面 就是04 78 同一个页面,下面很多数据 比如有 23 就一个页面

  • 问题内容: PostgreSQL:9.3.2 Elasticsearch:0.90 jprante / elasticsearch-river-jdbc:2.2.2 PostgreSQL JDBC:9.3-1100 JDBC 41 我正在尝试使用elasticsearch river将一个postgresql Json数据类型列放入elasticsearch中。 这里是创造的河 河边抱怨说“名称”

  • 我是JS的初学者,以前从未接触过PHP。经过几个小时的搜索,我拼凑出了这一块。我想做的是,有一个简单的表单,里面有几个字段,这些字段被保存到一个JSON文件中。我希望每个后续条目都附加到文件的末尾,这样每个JSON对象就是这个人的名字和他们的注释。 通过下面的代码,我已经成功地将一些东西传递给PHP脚本,并将条目追加到json文件中。但是在json文件中显示的是这样的(在两个条目之后): 这是我的