如何在没有硬编码名称的情况下转换这个json结构

How to convert this json structure without hard-coding names?

本文关键字:转换 情况下 结构 json 编码      更新时间:2023-09-26

我有这个json变量。

var x =
    [
        {
            x1_year: 0.73,
            x2_year: 0.84,
            x5_year: 1.37,
            x10_year: 1.88                
        }
    ];

我想把它改成这样;

var y =
    [
        {
            c: [{
                v: "x1_year"
            },
                {
                    v: "0.73"
                }]
        },
        {
            c: [{
                v: "x2_year"
            },
                {
                    v: "0.84"
                }]
        },
        {
            c: [{
                v: "x5_year"
            },
                {
                    v: "1.37"
                }]
        },
        {
            c: [{
                v: "x10_year"
            },
                {
                    v: "1.88"
                }]
        }
    ];

我有一个制作y1 === y的解决方案。它看起来是这样的;

var y1 = [
    {
        c:
        [
            {"v": "x1_year"},
            {"v": x[0].x1_year}
        ]
    },
    {
        c:
            [
                {"v": "x2_year"},
                {"v": x[0].x2_year}
            ]
    },
    {
        c:
            [
                {"v": "x5_year"},
                {"v": x[0].x5_year}
            ]
    },
    {
        c:
            [
                {"v": "x10_year"},
                {"v": x[0].x10_year}
            ]
    }
];

不幸的是,这是一个糟糕的解决方案。问题是,我的解决方案对密钥的名称进行了硬编码,如x1_yearx1_yearx5_yearx10_year

我希望有一个改进的解决方案,这样密钥的名称就不会被硬编码。更好的是,x中可以有任意数量的密钥名称对。如果可能的话,如何做到这一点?

这是有效的:

var x = [
    {
        x1_year: 0.73,
        x2_year: 0.84,
        x5_year: 1.37,
        x10_year: 1.88
    }
];
var y = [];
Object.keys(x[0]).forEach(function(key) {
    y.push({
        c: [
            {v: key},
            {v: x[0][key]}
        ]
    })
});

像这样尝试

var temp = [];
x.forEach(function(y) {
    for (var i in y) {
        var temp1 = []
        temp1.push({
            'v': i
        });
        temp1.push({
            'v': y[i]
        });
        temp.push({
            'c': temp1
        });
    }
});
console.log(temp);

代码段

var x =
    [
        {
            x1_year: 0.73,
            x2_year: 0.84,
            x5_year: 1.37,
            x10_year: 1.88                
        }
    ];
var temp=[];
x.forEach(function(y){
  
  
  for(var i in y){
    var temp1=[]
    temp1.push({'v':i});
    temp1.push({'v':y[i]});
    temp.push({'c': temp1});
  }
  
});
console.log(temp);

相关文章: