javascript - 将基于行的 JSON 转换为基于列的 JSON

标签 javascript json row transform

我想将基于行的 JSON 转换为基于列的 JSON。我收到基于行的形式的 JSON,并将用它进行一些可视化,这在基于列的形式中会更容易。

基于行的看起来像这样:

{
  "0": {
    "fname": "John", 
    "lname": "Miller", 
    "age": 50
  }, 
  "1": {
    "fname": "Eve", 
    "lname": "Johnson", 
    "age": 40
  }...

基于列的示例:

{
  "fname": {
    "0" : "John", 
    "1" : "Eve"
  }, 
  "lname": {
    "0" : "Miller", 
    "1" : "Johnson"
  }, 
  "age": {
    "0": 50, 
    "1" : 40
  }...

有没有比循环遍历所有元素并完全重写 JSON 更有效的方法?

谢谢!

最佳答案

至少,您需要交换结果对象的键。

var data = { 0: { fname: "John", lname: "Miller", age: 50 }, 1: { fname: "Eve", lname: "Johnson", age: 40 } },
    result = Object.keys(data).reduce(function (r, k) {
        Object.keys(data[k]).forEach(function (l) {
            r[l] = r[l] || {};
            r[l][k] = data[k][l];
        });
        return r;
    }, {});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将基于行的 JSON 转换为基于列的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43843408/

相关文章:

javascript - 如何检查 vue.js 模板中的列表是否为空?

java - mapper.writeValue() 方法出错

python - 如何从python中的JSON文件中选择数据?

mysql - 从两张表sql计算商品剩余库存

javascript - Angular 树组件:通用类型 'ModuleWithProviders<T>' 需要 1 个类型参数

javascript - VueJS 日期选择器 : how to dynamically disable dates?

javascript - 无法在 iOS Safari 中播放声音

javascript - 序列化一个奇怪的js对象

excel - 如何仅将包含数据的行从一个工作表复制到另一个工作簿中的另一个?

mysql - 更新数据表中的行