javascript - couchdb 简化为矩阵
问题描述
我有一个沙发数据库,里面有一系列像这样的文件
{
"foo" :1,
"bar" : 2
}
{
"foo" :3,
"bar" : 4
}
并试图创建一个减少到
{
"ColumnNames" : ["foo","bar"],
"Values" : [[1,3],[2,4]]
}
但我目前坚持:
function (keys, values, rereduce) {
var firstPass = {};
for(var i = 0; i < values.length; i++ ){
var v = values[i];
for(var prop in v){
if(v.hasOwnProperty(prop)){
if (!firstPass.hasOwnProperty(prop)) {
firstPass[prop] = [];
}
var ve = v[prop];
firstPass[prop].push(ve);
}
}
}
return firstPass;
}
减少到
{
"foo" : [[1],[3]],
"bar" : [[2],[4]]
}
我不知道怎么走剩下的路
解决方案
对数据进行分组的好用例Map
,然后在分组后传递给您的结果对象
const data = [{
"foo": 1,
"bar": 2
},
{
"foo": 3,
"bar": 4
}
];
const m = new Map()
data.forEach(e => {
Object.entries(e).forEach(([k, v]) => {
!m.has(k) && m.set(k, []);
m.get(k).push(v);
});
});
const res = {
ColumnNames: [...m.keys()],
Values: [...m.values()]
}
console.log(res)
.as-console-wrapper { max-height: 100% !important;}
推荐阅读
- python - 如何使用我拥有的以下数据绘制时间序列图
- swift - 找出与物体前锚点的距离
- r - 如何在不在 r 中创建标题的情况下进行转置?
- javascript - 使用 javascript 或 typescript 检查每个值是否包含在数组中
- php - 哪种数据类型适用于 mysql 中的这种格式 (2008-02-04T10:20:00.000+00:00)?
- web - 主机操作系统作为 Web 应用程序
- algorithm - 机器可以生成真正的随机数吗?
- tableau-api - Tableau 仪表板筛选操作不包括日期,但包括以单击日期表示的客户端
- c - 如何更新 vargs 以发送到 printf
- java - java 7 如何按ID对组中的2个数组求和