我可以使用 javascript 对 json 数据执行复杂的 SQL 样式查询吗?

Cla*_*tem 5 javascript sql jquery json

我遇到一个问题,我需要以可以使用 sql 命令类型操作的方式操作 json 结果。

就像左连接、求和以及分组依据

你们中有人最近遇到过这种情况吗?

我目前正在使用/探索 jsonsql javascript.. 暂时在此输入图像描述

Attach 是我需要操作的 json 文件..

新的结果应该是这样的

在此输入图像描述

所以我猜我需要使用左连接才能产生这种输出。

我的问题就像收集行中的所有/某些部分并将其设为一列,然后将它们全部放在一起,类似这样???

我希望我说得有道理..感谢您的所有回复..

Tho*_*unk 3

该语言为您提供了一些不错的功能,因此无需将 SQL 封装在 JS 上:

var data=[{"firstName":"Alice", "age":"16"},{"firstName":"Bob", "age":"18"} ... {"firstName":"Zacharias", "age":"37"}]
Run Code Online (Sandbox Code Playgroud)

如果你愿意SELECT * FROM json WHERE age>16,你可以在 JS 中做一些等效的事情:

data.filter(function(x){ return x.age>16 })
Run Code Online (Sandbox Code Playgroud)

如果你想SELECT count(*) FROM json你就写

data.length;
Run Code Online (Sandbox Code Playgroud)

如果你愿意SELECT avg(age) FROM json你可以写

data.reduce(function(o,n){ return o+(n.age/data.length) }, 0)
Run Code Online (Sandbox Code Playgroud)

如果你愿意SELECT sum(age) from json你可以写

data.reduce(function(o,n){ return o+n.age*1 },0) 
Run Code Online (Sandbox Code Playgroud)

那么为什么不使用语言给你的东西呢?

编辑:我看到,您指定了您的需求。到底需要什么转型?我认为应该有一种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;
}, {})
Run Code Online (Sandbox Code Playgroud)

这是一个可以玩的JSFiddle 。