如何在没有硬编码名称的情况下转换这个json结构
How to convert this json structure without hard-coding names?
我有这个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_year
、x1_year
、x5_year
、x10_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);
相关文章:
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- CSS转换获胜't在没有“setTimeout”的情况下运行
- 如何在不使用css转换的情况下将jQuery animate与css3属性相结合
- CSS 转换不会在没有 setTimeout 的情况下运行
- 在没有内置 Javascript 函数的情况下将基数 10 转换为其他基数 2 的数字
- 是否可以在不转换为UTC的情况下格式化日期
- 在没有科学记数法的情况下将大数字转换为字符串
- 如何在不提交表单的情况下将回车键转换为 Tab 键
- 如何在不使用 JavaScript 正则表达式的情况下将大写转换为小写,反之亦然
- 如何在不使用 JSON.stringify 的情况下将 JSON 转换为字符串
- 如何在不考虑转换的情况下计算getBoundingClientRect()
- 如何在不转换为本地时区的情况下保持日期不变
- 大的 JavaScript ints 不会在没有舍入的情况下转换为 String
- 角度 UI 路由器 - 在没有参数的情况下从一个状态转换到同一状态失败
- 如何在没有正则表达式的情况下将 dd-MM-yyyy HH:mm:ss 转换为 Javascript 中的纪元时间
- 如何在不使用输入类型=“*”的情况下将文本转换为*;密码”;
- 在不使用jQuery的情况下,用JavaScript将表转换为数组
- 是否可以像在Javascript对象中那样将整数值存储在localStorage中,并在不进行类型转换的情况下提取它