我遇到了一个问题,我需要以某种方式操纵json结果 我可以用sql命令类型来操作它。
喜欢左连接和总和和分组
因此你们中的任何人最近都遇到过这种情况?
我目前正在使用/探索jsonsql javascript ..暂时
attach是我需要操作的json文件..
新结果应该是这样的
所以我猜我需要使用左连接才能产生这种输出。
我的问题就是收集行中的所有/部分内容并将其作为列 然后将所有这些放在一起......
我希望我有道理..感谢您的所有回复......
答案 0 :(得分:3)
该语言为您提供了一些不错的功能,因此不需要在JS上包装SQL:
var data=[{"firstName":"Alice", "age":"16"},{"firstName":"Bob", "age":"18"} ... {"firstName":"Zacharias", "age":"37"}]
如果你想要SELECT * FROM json WHERE age>16
,你可以在JS中做同样的事情:
data.filter(function(x){ return x.age>16 })
如果你想SELECT count(*) FROM json
,你只需要写
data.length;
如果你想SELECT avg(age) FROM json
,你可以写
data.reduce(function(o,n){ return o+(n.age/data.length) }, 0)
如果你想SELECT sum(age) from json
,你可以写
data.reduce(function(o,n){ return o+n.age*1 },0)
那么为什么不使用,语言给你什么?
编辑:我看到了,你指定了你的需求。究竟需要什么转型?我认为应该有一种JS方式,做什么,你想要什么。
Edit2:对于表格表示,您必须对所有数据执行reduce
。对于这个例子,我简化了一点:
var aaData=[{"country":"USA", "month":"1", "earnings":"1000"}, {"country":"USA", "month":"2", "earnings":"1001"}, {"country":"USA", "month":"3", "earnings":"1002"}, {"country":"Germany", "month":"1", "earnings":"1000"}, {"country":"Germany", "month":"2", "earnings":"1001"}, {"country":"Germany", "month":"3", "earnings":"1002"}]
var result=aaData.reduce(function(o, n){
if (!o.hasOwnProperty(n.country)) o[n.country]={};
o[n.country][n.month]=n.earnings;
return o;
}, {})
以下是JSFiddle。